Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Configuration 如何在网站上高效地存储和服务大量小图片?_Configuration_Scalability_Lamp - Fatal编程技术网

Configuration 如何在网站上高效地存储和服务大量小图片?

Configuration 如何在网站上高效地存储和服务大量小图片?,configuration,scalability,lamp,Configuration,Scalability,Lamp,在我的网站上,我想为用户提供一个有很多小图片的页面,有点像Windows中的缩略图。 所有图片都是大小从1KB到300KB以上的文件,但通常不超过5KB 目前,所有这些图像都位于web服务器(linux+apache)上的一个文件夹中,但我认为这不是最好的解决方案,尤其是当我必须扩展到多个web服务器时,以及当我拥有数千个图像时 那么,我应该把这些文件放在数据库中吗?或者有一个单独的文件服务器?其他建议?您希望尽可能减少CPU时间/图片。我建议使用代理来提供这些图片(作为静态内容)。我有很好的经

在我的网站上,我想为用户提供一个有很多小图片的页面,有点像Windows中的缩略图。
所有图片都是大小从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(子)域的所有静态内容

我还没有在云上运行大型web服务器的实际操作经验(只是批量操作),因此,唉,我无法提供任何可靠的信息。