这个同样适用于其他,不一定是Wordpress,不过这篇博文穿插了wordpress博客的WP Super Cache缓存时间的修改。
通常,我们查询HTTP Header信息的时候会发现如下信息:
HTTP/1.1 200 OK
Date: Tue, 24 Mar 2015 14:11:56 GMT
Cache-Control: max-age=86400
Content-Type: image/png
Last-Modified: Mon, 16 Mar 2015 13:27:55 GMT
Accept-Ranges: bytes
ETag: “268bca2ed5fd01:0”
Server: nginx
Content-Length: 23293
Age: 1
X-Cache: HIT from cache.51cdn.com
X-Via: 1.1 jsyc109:8104 (Cdn Cache Server V2.0), 1.1 xiazai200:3 (Cdn Cache Server V2.0)
Connection: keep-alive
了解以上一段HTTP Header
HTTP/1.1 表示的是使用HTTP 1.1协议,2.0出来了哈。后面的200表示请求状态,一般来说2xx表示请求成功,比如200状态。3xx一般用于重定向,比如常见的301 302 304等等。4xx表示请求错误,404大家很常见的啦。5xx也很常见,比如500错误,502 bad gateway 网关超时错误等等。
Data 表示请求日期。
Cache-Control 表示缓存控制,一般后面使用max-age或者no cache。常见的有private、no-cache、max-age、must-revalidate,或者使用Expires作为开头,表示文件的过期时间。
Last-Modified 表示在服务端文件最后修改的时间。
ETag 在HTTP中说明为 被请求变量的实体值 ,有点像 Last-Modified 。具体参考WIKI。
Server 服务端软件,比如IIS,Apache,nginx,lighttpd等等。
Content-Length 表示文件实体长度,又表示传输数据的长度。与Transfer-Encoding不能共存。若同时存在则忽略Content-Length。
Age 年龄。按秒计算。
Connection 连接。持续连接。
回到正题,先说IIS的修改。
我们需要修改的是web.config文件,适用于IIS 7 7.5或者更高版本。
打开web.config文件,会有一段如下内容:
默认情况下,为1.00:00:00,表示为86400秒,即1天。那么http header的Cache-Control部分则输出Cache-Control: max-age=86400,则告诉浏览器这份文件需要在本地缓存86400,期间如果发生重复读取则先从本地读取缓存。如果删去这一段或者设置成0,则输出Cache-Control:no-cache,表示不缓存这个文件。每次请求都从服务端请求。
如果是wordpress,并且使用WP-Super-Cache插件,以上修改仅仅是不够的。很奇怪,WP-Super-Cache插件默认设置为 max-age=3,即缓存时间为3秒,3秒后过期并从服务端重新请求。如果需要设置成更长时间,比如1天,3天,或者更长,则需要进行配置文件的修改。
进入WP-Super-Cache插件目录,wp-content – plugins – wp-super-cache,修改 wp-cache.php 和 wp-cache-phase1.php 文件。
打开wp-cache.php文件,查找到
Header set Cache-Control ‘max-age=3
将后面的3替换成更高的数值,比如86400(1天),或者更大。
打开wp-cache-phase1.php文件,查找到
header( “Cache-Control: max-age=3, must-revalidate” );
同样将后面的3替换成更高的数值,比如86400(1天),或者更大。
这样就能实现WP-Super-Cache插件缓存的文件在浏览器端保存更长时间而不必重新请求。
[分享]配置IIS 的 HTTP Header 来实现 WordPress 浏览器缓存:等您坐沙发呢!