2/10/2008

使用mod_headers或mod_expires落实缓存

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。

http://www.pcxingxing.net.ru/main/2008-02/100-using-mod_headers-or-mod_expires-implement-caching.html

实施这一方法将节省你难以置信数额的带宽,极大地加快你的网站为你的网站访客。基本上,对于图片,CSS , JavaScript以及其他文件可以通过优化更快的下载,告诉你的网站访问者快取记忆体,为他们在某一段时间内。默认的行为是每一次请求检查文件的last-modified 和/或者 Etag headers。


所以一个用户去/home/index.html,及浏览器缓存所有图象和文件。然后用户离开网站稍后回来,与浏览器发送If-Modified-Since 有条件的GET 请求为每一个缓存的项目时,基本上看,如果文件已被改变和他们必须更新他们的缓存。


当你执行在这篇文章中所述的缓存方法,你可以指定某文件或扩展名被缓存为某一特定数额的时间。这些文件然后缓存在你的网站访客和他们不发送If-Modified-Since头直到设置的缓存时间已经到了。


#================================================= ============================#

# TIME CHEAT SHEET

#================================================= ============================#

# 300 5 M # 604800 1 W

# 2700 45 M # 1814400 3 W


# 3600 1 H # 2419200 1 M

# 54000 15 H # 14515200 6 M

# 86400 1 D # 26611200 11 M

# 518400 6 D # 29030400 1 Y (never expire)


第一个解决办法是Apache模块mod_expires 1.3 2.0 2.2


ExpiresActive On


ExpiresDefault A300

ExpiresByType image/x-icon A2592000

ExpiresByType application/x-javascript A2592000

ExpiresByType text/css A2592000

ExpiresByType image/gif A604800

ExpiresByType image/png A604800

ExpiresByType image/jpeg A604800

ExpiresByType text/plain A604800

ExpiresByType application/x-shockwave-flash A604800


ExpiresByType video/x-flv A604800

ExpiresByType application/pdf A604800

ExpiresByType text/html A300


第二个解决办法是mod_headers 1.3 2.0 2.2


# YEAR

<FilesMatch “\.(flv|gif|ico)$”>


Header set Cache-Control “max-age=2592000″

</FilesMatch>


# WEEK

<FilesMatch “\.(pdf|swf|js|css)$”>

Header set Cache-Control “max-age=604800″

</FilesMatch>


# NEVER CACHE


<FilesMatch “\.(html|cgi|php|htm)$”>

Header set Expires “Thu, 01 Dec 2003 16:00:00 GMT”

Header set Cache-Control “no-store, no-cache, must-revalidate”

Header set Pragma “no-cache”

</FilesMatch>


注:用filesmatch和files在htaccess文件



这里是Headers当下载一个JPEG图像的时候,


这个缓存方案实施后和没有缓存时的效果。


JPEG 没有缓存的时

Last-Modified: Wed, 22 Feb 2006 12:16:56 GMT

ETag: “b57d54-45e7″

Accept-Ranges: bytes

Content-Length: 17895

Connection: close


Content-Type: image/jpeg

缓存过的

Cache-Control: max-age=2592000

Expires: Tue, 28 Mar 2006 16:23:52 GMT

Last-Modified: Wed, 22 Feb 2006 12:16:56 GMT

ETag: “b57d54″

Accept-Ranges: bytes

Content-Length: 17895


Connection: close

Content-Type: image/jpeg

Content-Language: en


附:


apache配置文件例子:


example 1


# htm files are php

AddHandler application/x-httpd-php .php .htm


# setup errordocuments to local php file


ErrorDocument 404 /cgi-bin/error.htm

ErrorDocument 403 /cgi-bin/error.htm

ErrorDocument 500 /cgi-bin/error.htm


# Turn on Expires and set default expires to 3 days

ExpiresActive On

ExpiresDefault A259200


# Set up caching on media files for 1 month

<FilesMatch “\.(ico|gif|jpg|jpeg|png|flv|pdf|swf|mov|mp3|wmv|pp t)$”>


ExpiresDefault A2419200

Header append Cache-Control “public”

</FilesMatch>


# Set up 2 Hour caching on commonly updated files

<FilesMatch “\.(xml|txt|html|js|css)$”>

ExpiresDefault A7200

Header append Cache-Control “private, must-revalidate”


</FilesMatch>


# Force no caching for dynamic files

<FilesMatch “\.(php|cgi|pl|htm)$”>

ExpiresDefault A0

Header set Cache-Control “no-store, no-cache, must-revalidate, max-age=0″

Header set Pragma “no-cache”

</FilesMatch>


example 2


# htm files are php

AddHandler application/x-httpd-php .php .htm


# setup errordocuments to local php file

ErrorDocument 404 /cgi-bin/error.htm

ErrorDocument 403 /cgi-bin/error.htm

ErrorDocument 500 /cgi-bin/error.htm


# Turn on Expires and set default to 0


ExpiresActive On

ExpiresDefault A0


# Set up caching on media files for 1 year (forever?)

<FilesMatch “\.(ico|flv|pdf|mov|mp3|wmv|ppt)$”>

ExpiresDefault A29030400

Header append Cache-Control “public”

</FilesMatch>


# Set up caching on media files for 1 week


<FilesMatch “\.(gif|jpg|jpeg|png|swf)$”>

ExpiresDefault A604800

Header append Cache-Control “public, proxy-revalidate”

</FilesMatch>


# Set up 2 Hour caching on commonly updated files

<FilesMatch “\.(xml|txt|html|js|css)$”>

ExpiresDefault A7200


Header append Cache-Control “private, proxy-revalidate, must-revalidate”

</FilesMatch>


# Force no caching for dynamic files

<FilesMatch “\.(php|cgi|pl|htm)$”>

ExpiresDefault A0

Header set Cache-Control “no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform”

Header set Pragma “no-cache”


</FilesMatch>


-end-


原始文章: Speed Up Sites with htaccess Caching (http://www.askapache.com/htaccess/speed-up-sites-with-htaccess-caching.html)

0 评论:

免责声明

1、本人是文盲,以上内容文字均不认识,也看不懂是什么意思(包括但不限于对所以上之内容的识别、阅读、理解、分析、记忆等);

2、本人过去、现在以及将来都不认识本文中提及当事人,且自古以来与该相对人无利益关系;

3、本人昨天、今天以及明天都没有或者不准备去本文所述地点。本文表述之事与本人无关。

4、本人在此发文(包括但不限于汉字、拼音、拉丁字母、斯拉夫字母、日语假名、阿拉伯字母、单词、句子、图片、影像、录音、以及前述之各种任意组合等等)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人局部或全部同意、支持或者反对文中观点。如需要详查请直接与键盘发明者及生产厂商法人代表联系;

5、人生有风险,上网需谨慎。本文不暗示、鼓励、支持或映射读者作出生活方式、工作态度、婚姻交友、股票债券买卖、子女教育的积极或消极判断。未成年人请在监护人陪同下阅读本文。无完全民事行为能力者,请立即关闭网页,并用20%高锰酸钾+75%乙醇对键盘、硬盘、电压插座、显示器、鼠标、cpu进行灌溉消毒;

6、如本人留言违反国家有关法律,请网络管理员及时删除本文,本人保留继续发文的权利;

7、因删贴不及时所产生的任何法律(包括宪法、加法、减法、乘法、除法、剑法、拳法、脚法、指法、民法、刑法、书法、公检法、基本法、劳动法、婚姻法、输入法、没办法、国际法、今日说法、吸星大法及文中涉及或可能涉及以及未涉及之法,各地治安管理条例)纠纷或责任本人概不负责;

8、本人谢绝任何跨省(包括但不限于跨国、跨洲、跨星球、跨星系)追捕行为。确因不抓不足以平民愤,或不抓就领不到薪水养家户口的公职人员,建议携带工作证、身份证、结婚证/离婚证、独生子女证、健康证、暂住证、毕业证、边防证、县以上政府机关出具的介绍信温情操作。抓捕按照以下排序倒序:作者、原作者以及网络管理员以及网络运行商、电信运营商、电力供应商、电脑生产销售商.