Welcome to the Question2Answer Q&A. There's also a demo if you just want to try it out.

Why are images stored in blob, not in the file system?

+6 votes
200 views
asked Nov 6 in Q2A Core by anonymous
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?
Q2A version: 1.8
commented Nov 14 by Putin
why hide avatars?
commented Nov 15 by pedjas
Avatars often contain personal information like photos.
commented Nov 15 by Putin
reshown Nov 30 by Scott
I repeat, most sites questions and answers to hide the avatar is not necessary! Why upload an avatar to the Internet to hide it later? For what?
commented Nov 15 by pedjas
Answer is quite simple: access control.
If something is there it does not mean everyone should see it.

For example, you provided your email address to this site, but I cannot see it. Admin can.

On sites I admin, users do upload avatars but they do not want neither avatars nor their names to to be visible to ANONYMOUS visitors of the site. They want that level of privacy.

2 Answers

0 votes
answered Nov 7 by arjunsuresh
Every static request is a request to the script and (filesystem | database) -- second can be configured.
commented Nov 7 by Putin
Do you know how to do what I need?

Home page https://gateoverflow.in/ has
276 requests (Vancouver, Canada)  :) 17,3 sec and page size 4.9 MB.
216 Requests Washington DC, Load time 4.73 s
230 Requests Australia Sydney, Load time 13.74 s
218 Requests from London, Load time 6.51 s

And this is with more than 20K visitors per day!
You don't like your users?
Have you heard anything about website optimization? :) If not, ask me how :)
commented Nov 8 by Gateoverflow
@Putin , what about https://gateoverflow.net/ :)
commented Nov 8 by Putin
this is small site on bluehost
+1 vote
answered Nov 30 by Scott

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.

...