浏览器资源缓存(图像、Javascript、CSS)



我在正在更新的网站上缓存时遇到问题。我更新的许多资源(javascript、css和图像文件)似乎都是由浏览器本地缓存的。我不明白的是为什么,或者如何解决这个问题——重命名我编辑过的所有内容(这不是一个很有吸引力的解决方案)。

服务器正在http标头中生成以下内容。

Date Fri, 06 Jan 2012 00:09:32 GMT
Server  Apache/2.2.16 (Amazon)
X-Powered-By    PHP/5.3.5
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma  no-cache
Content-Length  3636
Connection  close
Content-Type    text/html; charset=UTF-8

根据我对缓存控制指令的理解,资源不应该被缓存。尽管如此,我还是得到了在上传更改后不会更新的图像、css和javascript文件。

关于如何解决这个问题或最佳实践,有什么想法吗?

在这方面取得了一些进展后,我决定将所有可缓存的资源放在有版本的文件夹中(即css-1.2.1、js-1.2.1等)。每当我更新网站时,我都会增加我的版本号(我会保持所有版本号的同步)。这在缓存优化方面是次优的,但这意味着我不必跟踪每个资源的单个版本号。考虑到我不是每四个小时更新一次网站,这意味着每当我更新网站时,用户都必须下载一个新的资源集。

最新更新