Правильно отформатированное кэширование для файла .htaccess - PullRequest
1 голос
/ 29 декабря 2011

Я просто хочу проверить, хорош ли код для файла .htacess. Я хочу реализовать отлов на сайте, поэтому я нашел код и отредактировал только время для своих нужд.

Я хочу кэшировать flv | ico | pdf | avi | mov | ppt | doc | mp3 | wmv | wav | swf файлов на 1 месяц, gif | jpg | jpeg | png | js | css файлы на 2 недели, xml | txt | htm | html файлы на 1 день и не для кэширования php | cgi | pl файлов.

Что мне нужно, это:

  1. Код в порядке, или в нем есть какая-то ошибка?

  2. Нужны ли мне оба файла mod_headers.c и mod_expires.c в моем файле .htacces, и могут быть оба или только один?

Это код для файла .htaccess:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault A86400        
    ExpiresByType image/x-icon A2592000
    ExpiresByType application/x-javascript A1209600
    ExpiresByType text/css A1209600
    ExpiresByType image/gif A1209600
    ExpiresByType image/png A1209600
    ExpiresByType image/jpeg A1209600
    ExpiresByType text/plain A86400
    ExpiresByType application/x-shockwave-flash A2592000
    ExpiresByType video/x-flv A2592000
    ExpiresByType application/pdf A2592000
    ExpiresByType text/html A86400
    </IfModule>

<ifmodule mod_headers.c>
## Turn on Expires and set default expires to 1 day
ExpiresActive On
ExpiresDefault A86400

## Set up caching on media files for 1 month
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|swf)$">
  ExpiresDefault A2592000
  Header append Cache-Control "public"
</FilesMatch>

## Set up caching on images css and js files for 2 weeks
<FilesMatch "\.(gif|jpg|jpeg|png|js|css)$">
  ExpiresDefault A1209600
  Header append Cache-Control "public"
</FilesMatch>

## Set up 1 day caching on commonly updated files
<FilesMatch "\.(xml|txt|htm|html)$">
  ExpiresDefault A86400 
  Header append Cache-Control "private, must-revalidate"
</FilesMatch>

## Force no caching for dynamic files
<FilesMatch "\.(php|cgi|pl)$">
  ExpiresDefault A0 
  Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0"
  Header set Pragma "no-cache"
</FilesMatch>
</ifmodule>

И нужно ли это тоже поставить

<ifModule mod_headers.c>
  Header unset ETag
</ifModule>
FileETag None

А также, какое сжатие лучше использовать:

<ifModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>

или

<ifModule mod_gzip.c>
  mod_gzip_on Yes
  mod_gzip_dechunk Yes
  mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
  mod_gzip_item_include handler ^cgi-script$
  mod_gzip_item_include mime ^text/.*
  mod_gzip_item_include mime ^application/x-javascript.*
  mod_gzip_item_exclude mime ^image/.*
  mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
...