做笔记,上来就直接干了
当直接在浏览器中输入一个URL,或者点击一个链接的时候,那么浏览器缓存就会起作用,如果缓存没有过期,那么浏览器会从本地读取资源,不会发起HTTP请求,如果缓存过期,那么浏览器会发起新的浏览器请求。按ctrl+F5
,浏览器会清空本地缓存,重新请求资源。 Expires
是HTTP/1.0的缓存头, Cache-Control: max-age
是HTTP/1.1是用来进行HTTP缓存的头。
Expires指定了资源过期的绝对时间,GMT格式,Cache-Control: max-age指定了资源过期的相对时间,单位是秒。
在支持HTTP/1.1的浏览器上,如果发送两个头,那么Cache-Control: max-age会覆盖掉Expires;
在支持HTTP/1.0的浏览器上,即使发送了两个头,但是只有Expires会起作用,所以为了兼容老的浏览器,还是要同时发送这两个头。
设置HTTP缓存,需要安装expires_module,其会发送Expires和Cache-Control: max-age两个HTTP头。配置如下:
<IfModule expires_module> ExpiresActive On ExpiresByType application/x-javascript "access plus 30 days" ExpiresByType text/css "access plus 30 days" ExpiresByType image/gif "access plus 30 days" ExpiresByType image/jpeg "access plus 30 days" ExpiresByType image/png "access plus 30 days" </IfModule>
两种写法
ExpiresByType image/gif A2592000
# HTML文档的有效期是最后修改时刻后的一星期
ExpiresByType text/html M604800
ExpiresByType application/x-javascript "access plus 30 days"
表示对js资源设置Expires
和Cache-Control: max-age
头,其中Expires
的值是以客户端访问资源的时间为基准的后30天,Cache-Control: max-age
的值是3600x24x30秒。
两种写法是有区别的,在前面用squid 缓存的时候
修改时间如果短很容易过期,过期后squid会一直请求后端apache
比如
squid的日志
[27/Sep/2015:10:51:12 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:10:57:00 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:10:58:03 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:00:34 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:00:52 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:01:13 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:04:13 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:06:29 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:06:39 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:07:09 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:08:27 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
[27/Sep/2015:11:12:34 TCP_REFRESH_UNMODIFIED:ROUNDROBIN_PARENT
修改后
[27/Sep/2015:11:14:53 TCP_IMS_HIT:HIER_NONE
[27/Sep/2015:11:16:47 TCP_IMS_HIT:HIER_NONE
[27/Sep/2015:11:19:44 TCP_IMS_HIT:HIER_NONE
[27/Sep/2015:11:24:48 TCP_IMS_HIT:HIER_NONE
[27/Sep/2015:11:26:09 TCP_IMS_HIT:HIER_NONE
[27/Sep/2015:11:27:36 TCP_IMS_HIT:HIER_NONE
后端apache几乎没有日志,以前一直304