2009-08-30 55 views
1

我有许多许多小图像显示在用户的配置文件中,并且此页面的加载非常可怕。最好的解决办法是将它们全部精雕细刻,但令人遗憾的是,我有太多的图像,而且每个配置文件只有几百个。HTTP:什么是很少更改图像的最佳标头

所以,我试图得到第二个最佳解决方案。我应该发送什么标题? ETag的?过期?缓存控制?现在,我有:

http://metaward.com/media/award/ofwjh3.png

Last-Modified Sat, 11 Jul 2009 22:37:49 GMT 
Cache-Control max-age=2592000 
Expires Tue, 29 Sep 2009 22:41:21 GMT 

而且随着大量的图片(显示他们是如何加载速度缓慢,甚至当缓存)的示例页面:

http://metaward.com/6

有时用户也将改变他们的个人资料图片,但只有其中一个,所以我不担心缓存。

回答

2

在这种情况下,您应该使用“远期未来”来最大化缓存命中。这意味着如果你改变图像,你需要给它一个新的名字,但我无法想象你经常改变它们,因为有这么多。

你真的有100页的图像在网页上,你应该小心他们。也许有一些更常见的(你推荐的),你可以先看看它是否有帮助。或者,也许你可以做一个“最不可能改变”的精灵。

+0

通过sprite他们你的意思是将它们转换为图像映射。这样你只有一个大的图像下载,这将最大限度地减少发送到服务器的http请求数量,并加速下载。这对你发送的链接很有效,但可能并不总是合适的。 – Matt 2009-08-30 23:30:12

+0

这是远期未来的头衔的链接:http://www.askapache.com/htaccess/apache-speed-expires.html – ndp 2009-08-30 23:34:27

+0

@Matt是的。将所有图像放入一个文件中,然后“拼贴”它。假设你有100x100的瓷砖。如果您将其设置为背景图像,则第1行第2列的CSS看起来像“background-position:-100,0; ​​width:100; height:100; overflow:hidden”。 – ndp 2009-08-30 23:37:39

0

当访问者从配置文件移动到配置文件时,缓存可能会有所帮助,并且使用持久连接从不同子域中提供图像可能有助于加速传输,但真正的性能杀手只是HTTP请求的数量。如果您可以识别超过50%的时间出现在一起的两个或更多图像,似乎值得将它们组合成定期安排的脱机过程中的精灵。如果资源许可,甚至可以使用图像处理库例如php-gd在运行时结合并提供图像块。

相关问题