我有许多小图片显示在用户的个人资料中,并且此页面的加载非常糟糕。最好的解决方案是全部精灵,但遗憾的是我有太多的图像,每个配置文件只使用几百个。
所以,我正在尝试获得第二个最佳解决方案。我应该发送什么标题? 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
一个包含大量图片的示例页面(显示加载速度有多慢,即使在缓存时):
有时用户也会更改他们的个人资料图片,但只有其中一个,所以我不担心缓存。
答案 0 :(得分:2)
在这种情况下,您应该使用“远期未来到期”来最大化缓存命中率。这意味着如果你改变了一个图像,你需要给它一个新的名字,但我无法想象你经常会改变它们,因为有这么多。
页面上确实有100个图像,你应该用它们进行精灵扫描。也许有一些更常见的(你的推荐),你可以开始看看它是否有帮助。或许你可以做一个“最不可能改变”的精灵。
答案 1 :(得分:0)
当访问者从配置文件移动到配置文件时,缓存可能会有所帮助,并且使用持久连接提供来自不同子域的图像可以帮助加快交付速度,但真正的性能杀手只是HTTP请求的数量。如果您可以识别两个或更多图像在50%以上的时间内一起出现,那么在定期计划的离线过程中将它们组合成精灵似乎是值得的。如果资源允许,甚至可以使用图像处理库,例如php-gd在运行时组合并提供图像块。