【问题标题】:Image Not Caching?图片不缓存?
【发布时间】:2011-03-06 13:05:19
【问题描述】:

我确信我网站上的某些图片没有正确缓存。我已尽我所能设置标题,但每次我点击刷新按钮时,它们似乎仍会再次下载。

例如,特定图像的下载时间总是超过 1 秒。这甚至在它应该被缓存之后。以下是响应标头:

HTTP/1.1 200 OK
Date: Sun, 06 Mar 2011 12:51:52 GMT
Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.7a mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.16
Last-Modified: Thu, 01 Jan 1970 00:00:00 GMT
Accept-Ranges: bytes
Content-Length: 19211
Cache-Control: max-age=630323456, public
Expires: Wed, 03 Mar 2021 12:51:52 GMT
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: image/png

这有什么问题吗?谢谢。

更新

<FilesMatch "\.(htm|html|php)$">
    Header set Expires "Thu, 01 Jan 1970 00:00:00 GMT"  
</FilesMatch>

【问题讨论】:

  • 你的缓存大小是多少?在firefox地址栏中输入“about:cache”,看看你的文件是否在缓存中
  • @Pekka:是的。根据 Google:“将 Last-Modified 日期设置为上次更改资源的时间。如果 Last-Modified 日期在过去足够远,浏览器可能不会重新获取它。”
  • @Stack 当然,我没想到。嗯,您在 Firebug 中对此有何回应?你能确认它一直在重新加载吗?有没有机会举一个活生生的例子? @Zimbabao 提到的本地缓存可能确实是一个问题
  • @Zimbabao - 我的缓存已关闭(通过 Web 开发人员工具栏)!但是,当我重新启用它时,问题仍然存在。磁盘缓存:Maximum storage size: 51200 KiB(使用中的存储空间:284 KiB)
  • @Stack 您能否通过查看 Firebug 中的“网络”选项卡来确认图像是否不断被重新获取?你每次都会收到200 OK

标签: apache .htaccess performance yslow pagespeed


【解决方案1】:

你的 Last-Modified 是 1970 年,你的最大年龄是 630323456 秒(19 岁)。因此,该文件自 1989 年以来已“过期”,必须重新下载。浏览器正在做它应该做的事情。

解决方案:

  1. 将 Last-Modified 更改为 真实 Last-Modified(可能在过去几年的某个时间)

  2. 将 max-age 更改为

  3. 删除 Expires 标头;当你也有 max-age 时,它​​会被覆盖。 See RFC2616 section 14.9.3。或者,删除 Cache-Control 标头并仅保留 Expires 标头。任何一个都可以,但只能使用一个,不要两个都用。

【讨论】:

    猜你喜欢
    • 2018-02-09
    • 2017-08-07
    • 2023-03-18
    • 2014-01-23
    • 2017-03-25
    • 2018-03-15
    • 2012-01-19
    • 2016-05-24
    • 2013-03-22
    相关资源
    最近更新 更多