Configuration 如何在网站上高效地存储和服务大量小图片?
在我的网站上,我想为用户提供一个有很多小图片的页面,有点像Windows中的缩略图。Configuration 如何在网站上高效地存储和服务大量小图片?,configuration,scalability,lamp,Configuration,Scalability,Lamp,在我的网站上,我想为用户提供一个有很多小图片的页面,有点像Windows中的缩略图。 所有图片都是大小从1KB到300KB以上的文件,但通常不超过5KB 目前,所有这些图像都位于web服务器(linux+apache)上的一个文件夹中,但我认为这不是最好的解决方案,尤其是当我必须扩展到多个web服务器时,以及当我拥有数千个图像时 那么,我应该把这些文件放在数据库中吗?或者有一个单独的文件服务器?其他建议?您希望尽可能减少CPU时间/图片。我建议使用代理来提供这些图片(作为静态内容)。我有很好的经
所有图片都是大小从1KB到300KB以上的文件,但通常不超过5KB 目前,所有这些图像都位于web服务器(linux+apache)上的一个文件夹中,但我认为这不是最好的解决方案,尤其是当我必须扩展到多个web服务器时,以及当我拥有数千个图像时
那么,我应该把这些文件放在数据库中吗?或者有一个单独的文件服务器?其他建议?您希望尽可能减少CPU时间/图片。我建议使用代理来提供这些图片(作为静态内容)。我有很好的经验,这是一个快速可靠的 您的配置可能如下所示
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 300;
server {
listen 8080;
server_name localhost;
location /static/ {root static/pictures/;}
location / { proxy_pass http://127.0.0.1:8081; }
}
}
您的服务器位于端口8081,您可以直接从/static/pictures文件夹中提供图片。(请注意,所有以“/static”开头的URL都将从此文件夹中提供。)需要考虑的几点:
- 除非可以将图像保存在内存中,否则不要将其放入数据库。普通文件通常是二进制数据的完美解决方案,您仍然会为每个文件发出单独的HTTP请求
- 如果您可以在多个服务器上镜像映像并在它们之间保持平衡,那就太好了
- 如果您没有额外的服务器,请尝试使用虚拟子域进行伪装,以规避并发连接限制。看见与此相关的还有:将每个页面上的图像分布在您的子域上,每个子域上有2个或更多
- 不要试图压缩交通。你只会浪费CPU时间
- 确保对静态图像使用了正确的缓存(例如,远未来过期)。如果更新了图像,则始终可以更改地址
- 确保提供来自无cookie(子)域的所有静态内容