headermask image

header image

使用mod_headers或mod_expires落实缓存

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

实施这一方法将节省你难以置信数额的带宽,极大地加快你的网站为你的网站访客。基本上,对于图片,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)

 翻译:XINGXING

相关日志

如果你喜欢我的文章, 随时 订阅我的RSS feeds

Tags: ,

81 Responses to “使用mod_headers或mod_expires落实缓存”

  1. AskApache Says:

    Correct link is: http://www.askapache.com/htaccess/speed-up-sites-with-htaccess-caching.html

    :)

  2. Mikey Fritz Says:

    =))))))

  3. nEcroS Says:

    спасибо большое.

  4. MikeN Says:

    Читаешь это и думаешь….

  5. Michael Says:

    да,но это еще и не все…

  6. MaxWELL Says:

    Забавно. :-)

  7. Maxick Says:

    жжот))

  8. koles Says:

    Спасибо!, в цитатник!

  9. Maks Says:

    Классно!

  10. Ujeen Says:

    ух ты как крууууууууууутооооооо))

  11. Lcfasd Says:

    супер оригинально

  12. Dimont Says:

    Блеск.

  13. DUZER Says:

    тема реально старая

  14. dokas Says:

    Классно!

  15. N.Y.B. Says:

    потрясающие идеи…нам перенять бы …великолепно.

  16. S V S Says:

    Отличная работа!

  17. vovanfan Says:

    Какая прелесть!!!!!!!!!!!!)

  18. tcheh Says:

    Спасибо огромное!

  19. Nerd Says:

    Да, Именно так и было!:))

  20. S.I.V. Says:

    круто..взяла почти все))

  21. mXm Says:

    Напомнили….Точно, все так.

  22. okkam Says:

    забрала в цитатник, спасибо!

  23. Nitrat3000 Says:

    фантастика!…

  24. RM Says:

    Ничего себе подборочка!!!!!!! Великолепно!

  25. Petrovich Says:

    Благодарю!

  26. Nitrat Says:

    мдяяяя ….. *много думал*….
    автору спасибо за пост !!

  27. OlegNS Says:

    Большое спасибо! Есть ещё повод получить удовольствие… С вашего разрешения, беру.

  28. Morphius Says:

    …. вот так вот…..

  29. Sergg29 Says:

    Интересненько=)

  30. RN4AD Says:

    Классно!

  31. Maxick Says:

    ммм)) так клёво))

  32. Michael Says:

    Очень рада, что возникло желание взять этот пост в цитатник!

  33. ladjak Says:

    Интересненько=)

  34. Yorik_s Says:

    Забавно. :-)

  35. Arsen Says:

    Красота, особенно первая фотка

  36. Danger Says:

    Класс! Афтару респект!

  37. BSA Says:

    Да, Именно так и было!:))

  38. flash Says:

    Ну жесть конечно…

  39. Copycat Says:

    Шикарно, возьму в дневник

  40. DAS Says:

    Спасибки)))))) в цитатник!

  41. bufumi Says:

    jaqyxtdikhfwfmydbkkvhiwuqqjvdr

  42. Evil_Admin_A948 Says:

    =))))))

  43. BlackStation Says:

    Случайно увидел. Не ожидал.

  44. BAS Says:

    а в каком это городе,какой стране??очень креативненько!!!!!)))))

  45. Joker Says:

    Было интересно посмотреть!!!

  46. Alex_MAG Says:

    Вам спасибо - за тёплый приём )

  47. Anton T. Says:

    Шикарно, возьму в дневник

  48. Alex_Jackson Says:

    Случайно увидел. Не ожидал.

  49. Радист Says:

    забрала в цитатник, спасибо!

  50. Канцтоварищ Says:

    “подробней пожалуйста”

  51. Валентин Says:

    “Всегда приятно читать умных людей”

  52. Вихан Says:

    “Мне очень помогали ваши записи”

  53. Дамир Says:

    “Ты один из немногих, кто действительно хорошо пишет”

  54. МИХА Says:

    “Полезного много”

  55. VeniaminR Says:

    очень красиво, вот бы у нас так сделали

  56. Hell Says:

    С чистым юмором.

  57. Reanimator Says:

    “Превосходно”

  58. WraG Says:

    ну что тут скажешь…

  59. Valer4ik Says:

    круто..взяла почти все))

  60. ValeK Says:

    ух ты как крууууууууууутооооооо))

  61. Usmax Says:

    класс)мне понра)особенно!

  62. ladjak Says:

    “Классный пост”

  63. MikeN Says:

    “здорово!”

  64. lexsus2002 Says:

    “Занятно”

  65. mike Says:

    “Спасибо за статью”

  66. Noble Tiger Says:

    “Прикольно”

  67. Morphius Says:

    “подробней пожалуйста”

  68. Morphius Says:

    “Интересная заметка”

  69. sam_mer Says:

    “познавательно”

  70. Ruslan Says:

    “Добавил в закладки”

  71. sam_mer Says:

    “шикарно”

  72. Serg Says:

    мдяяяя ….. *много думал*….
    автору спасибо за пост !!

  73. Samorez Says:

    “Прямо даже не верится”

  74. Petrovich Says:

    “подробней пожалуйста”

  75. Sergey Says:

    Класс! Афтару респект!

  76. Nitrat Says:

    “Пост хорош”

  77. Michael Says:

    очень красиво, вот бы у нас так сделали

  78. SEOlamer Says:

    отличная статья, интересно было читать

  79. Olli Says:

    “Жжешь”

  80. Владислав Says:

    Хороший пост! Подчерпнул для себя много нового и интересного!
    Пойду ссылку другу дам в аське :)

  81. Илья Says:

    Катя, ты? Сори если ошибся

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>