It works slower. Nginx faster, gives statics than working on a php script + the query to the database. Photo profiles, pictures in questions and answers, if the user base 100.000 + 1.000.000 with photos - it will be a heavy load on the cpu/web server/database server?

Firstly, do note that you can store the images themselves on disk, if you set the config option and the folder permissions. There’s also a button on the Admin > Stats page to move existing blobs from database to disk.

But the link to the image still uses the database. There are a few reasons for that:

Storing in the database means images can be used without any extra config like setting folder permissions.

It links each image to a user, so even if they don’t use the image in a post you can see who uploaded it (useful for spam).

It stores other information such as upload date (which may not be available if you copy or move files around).

It allows images to be resized on the fly - look at your avatar for example, it’s shown at different sizes in different places but is only stored once. If you changed the sizes in settings you don’t need to regenerate thousands of files.

It allows for permissions checking and other features as mentioned above.

You are correct that “most sites don’t need the extra functionality”, but it’s also not future-proof. If we use direct image links, then there is no easy way to add the other options to the old files in the future.

Having said that, I can certainly see valid reasons for linking files directly. The biggest stumbling block would be the image resizing, for which I cannot think of any good solution. If you have one let me know.