Html 在我的网站上缓存图像的最佳方式是什么?

Html 在我的网站上缓存图像的最佳方式是什么?,html,apache,caching,http-headers,Html,Apache,Caching,Http Headers,我有一个网站 www.somesite1.com,它从www.somesite2.com获取所有图像内容 此时,每次显示一个图像时,我们只需使用一个绝对URL就可以得到这样的图像 <img src="http://www.somesite2.com/images/myimage.jpg" /> 因此,每当用户访问www.somesite1.com获取内容时,www.somesite2.com就会受到打击 我正在寻找缓存图像的聪明方法,可能是使用http头之类的。由于图像是一个单

我有一个网站

www.somesite1.com,它从www.somesite2.com获取所有图像内容

此时,每次显示一个图像时,我们只需使用一个绝对URL就可以得到这样的图像

<img src="http://www.somesite2.com/images/myimage.jpg" />

因此,每当用户访问www.somesite1.com获取内容时,www.somesite2.com就会受到打击


我正在寻找缓存图像的聪明方法,可能是使用http头之类的。由于图像是一个单独的http请求,因此请仅为图像保留一个单独的Web服务器。

最简单的答案是将http Expires头设置为一个遥远的未来值(例如10年)。这样(理论上)如果你有很多重复访问,浏览器就不应该再次请求该图像,从而减轻服务器的巨大负担。当然,当您想要更新图像时,您需要想出一种机制来更改图像url。大多数人通过在路径的某个位置添加内部版本号(或将内部版本号附加到查询字符串)来实现这一点

这里有一些关于性能的好信息(包括Expires头的使用):

我个人并不担心在服务器端缓存这些文件(我假定它们不是动态生成的)。它们是直接从光盘上提供的,因此开销应该很小。确保您有一台单独的机器来提供静态内容,并使用非常轻量级的web服务器,如Lighttpd或nginx,这将有助于提高吞吐量


您的设置没有问题,它工作正常。要了解如何使其更好地工作,必须了解浏览器的工作原理

首先,它将从www.somesite1.com读取HTML文档。然后它将读取它,查找任何URL。当它找到它们时,它将开始下载它们

因此,从浏览器的角度来看,站点1和站点2之间没有关系。如果您想改进站点2的缓存,可以完全忽略站点1


这意味着您必须通知站点2上的web服务器将正确的缓存信息发送到浏览器。例如,让它响应并/或在标题字段中将图像的生存期设置为某个较大的值。

除非您的网站非常受欢迎,否则您可能不需要第二台服务器来处理静态内容

如果您使用的是ApacheHTTP,那么您可以安装mod_缓存。您还可以考虑安装Squid缓存


不过,我同意安迪·休姆的观点,如果您确实需要第二台服务器,那么请轻拿轻放,使用lighttpd和Squid之类的工具。

您希望客户端(浏览器)缓存图像吗?或者您希望将它们缓存在某个站点上1?我主要感兴趣的是将它们缓存在服务器上,但是浏览器缓存也会很有用,除非您是flickr,否则使用一个完全不同的服务器来提供图像应该不是问题。如果旧浏览器中的最大2-http-requests问题真的让你慢了下来,那么就创建一个子域来解决它。