Apache模块 mod_expires
2015-09-27 12:44
489 查看
做笔记,上来就直接干了
当直接在浏览器中输入一个URL,或者点击一个链接的时候,那么浏览器缓存就会起作用,如果缓存没有过期,那么浏览器会从本地读取资源,不会发起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头。配置如下:
# HTML文档的有效期是最后修改时刻后的一星期
ExpiresByType text/html M604800
A86400意指浏览时起算1天.格式是代码加上秒数.代码有分两种,”A”等同”access”,意指浏览时起算过期时间.使用代码”A”比较适合应用 在不常变动的网页文件类型,例如图片.另外一种代码是”M”,其意义等同于”modification”,指的是网页文件的”最后编辑时间”
下面两种写法一个意思
ExpiresByType image/gif A2592000
两种写法是有区别的,在前面用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
2 当浏览器刷新的时候 squuid 还是后请求源服务器,因为浏览器会发起 If-Modified-Since:
但是对于图片基本没必要回源,所以可以配置squid忽略
refresh_pattern -i .gif$ 0 50% 4320 ignore-reload
refresh_pattern -i .bmp$ 0 50% 4320 ignore-reload
refresh_pattern -i .jpg$ 0 50% 4320 ignore-reload
refresh_pattern -i .png$ 0 50% 4320 ignore-reload
refresh_pattern -i .swf$ 0 50% 4320 ignore-reload
refresh_pattern -i .mp3$ 0 50% 4320 ignore-reload
refresh_pattern -i .wmv$ 0 50% 4320 ignore-reload
refresh_pattern -i .rm$ 0 50% 4320 ignore-reload
refresh_pattern -i .mpeg$ 0 50% 4320 ignore-reload
refresh_pattern -i .wma$ 0 50% 4320 ignore-reload
refresh_pattern -i .exe$ 0 50% 4320 ignore-reload
refresh_pattern . 0 20% 4320
当直接在浏览器中输入一个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>
# HTML文档的有效期是最后修改时刻后的一星期
ExpiresByType text/html M604800
A86400意指浏览时起算1天.格式是代码加上秒数.代码有分两种,”A”等同”access”,意指浏览时起算过期时间.使用代码”A”比较适合应用 在不常变动的网页文件类型,例如图片.另外一种代码是”M”,其意义等同于”modification”,指的是网页文件的”最后编辑时间”
下面两种写法一个意思
ExpiresByType image/gif A2592000
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
2 当浏览器刷新的时候 squuid 还是后请求源服务器,因为浏览器会发起 If-Modified-Since:
但是对于图片基本没必要回源,所以可以配置squid忽略
refresh_pattern -i .gif$ 0 50% 4320 ignore-reload
refresh_pattern -i .bmp$ 0 50% 4320 ignore-reload
refresh_pattern -i .jpg$ 0 50% 4320 ignore-reload
refresh_pattern -i .png$ 0 50% 4320 ignore-reload
refresh_pattern -i .swf$ 0 50% 4320 ignore-reload
refresh_pattern -i .mp3$ 0 50% 4320 ignore-reload
refresh_pattern -i .wmv$ 0 50% 4320 ignore-reload
refresh_pattern -i .rm$ 0 50% 4320 ignore-reload
refresh_pattern -i .mpeg$ 0 50% 4320 ignore-reload
refresh_pattern -i .wma$ 0 50% 4320 ignore-reload
refresh_pattern -i .exe$ 0 50% 4320 ignore-reload
refresh_pattern . 0 20% 4320
相关文章推荐
- Apache Isis 1.4.0 发布,领域驱动开发框架
- Linux快速构建apache web服务器
- Awstats处理多apache日志
- 安装perl模块小窍门
- PHP+Apache在Windows 9x下的安装和配置
- Apache服务器配置全攻略
- Apache Web让JSP“动”起来
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- apache 环境下 php 的配置注意事项
- 在RedHat下安装apache jserv 1.1.2方法
- windows中PHP5.2.14以及apache2.2.16安装配置方法第1/2页
- 在Windows XP下安装Apache+MySQL+PHP环境
- 解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
- apache rewrite防盗链三例
- Apache 配置详解(最好的APACHE配置教程)
- 一个监控Squid运行进程数并自动重启的简洁Shell脚本分享
- Apache+php+mysql在windows下的安装与配置(图文)第1/2页
- apache rewrite_module模块使用教程
- Apache rewrite重写规则的常见应用