2011-12-15 9 views
8

Webコンテンツのキャッシュを開始するために、以下のファイルを ".htacces"ファイルに入力しました。 Google Page SpeedとYslowによると、ページはまだキャッシュされていません。モジュールが間違っていますか?それとも、アプリがデータを正しく表示していないのですか?htaccessキャッシュが機能しない

サイトは、サーバー上のApache 2.0に

.htaccessファイル(キャッシュモジュールを搭載した部分)が実行されている:

# Expire headers 
<ifModule mod_expires.c> 
  ExpiresActive On 
  ExpiresDefault "access plus 1 seconds" 
  ExpiresByType image/x-icon "access plus 2592000 seconds" 
  ExpiresByType image/jpeg "access plus 2592000 seconds" 
  ExpiresByType image/png "access plus 2592000 seconds" 
  ExpiresByType image/gif "access plus 2592000 seconds" 
  ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" 
  ExpiresByType text/css "access plus 604800 seconds" 
  ExpiresByType text/javascript "access plus 216000 seconds" 
  ExpiresByType application/javascript "access plus 216000 seconds" 
  ExpiresByType application/x-javascript "access plus 216000 seconds" 
  ExpiresByType text/html "access plus 600 seconds" 
  ExpiresByType application/xhtml+xml "access plus 600 seconds" 
</ifModule> 
  
# Cache-Control Headers 
<ifModule mod_headers.c> 
#month 
  <filesMatch "\.(ico|jpe?g|png|gif|swf)$"> 
    Header set Cache-Control "max-age=2592000, public" 
  </filesMatch> 
#week 
  <filesMatch "\.(css|js)$"> 
    Header set Cache-Control "max-age=604800, public" 
  </filesMatch> 
#day 
  <filesMatch "\.(x?html?|php)$"> 
    Header set Cache-Control "max-age=43200, private, must-revalidate" 
  </filesMatch> 
</ifModule> 
# END Cache-Control Headers 
  
# Turn ETags Off 
<ifModule mod_headers.c> 
  Header unset ETag 
</ifModule> 
FileETag None 
  
# Remove Last-Modified Header 
<ifModule mod_headers.c> 
  Header unset Last-Modified 
</ifModule> 
+0

送信されたExpiresヘッダーを確認します。 Chromeデベロッパーツールを使用するか、Firebugのネットタブを使用します。 htaccessが無効になっているか、mod_expiresが有効になっていない可能性があります。 – Gerben

答えて

19

httpd.confに移動し、mod_expires行を探しに、それはコメントアウトするべきではありません。 mod_headers行を探し、コメントアウトされていないことを確認します。

か(いない重要なアプリケーションのための)簡単で汚れたテストがある:間に<ifModule mod_expires.c></ifModule>休暇のものを削除し、同じ<ifModule mod_headers.c>のために行くと、あなたのサーバが500インターネットサーバーエラーで失敗した場合、あなたはおそらく一方または両方が欠けこれらのモジュールは有効ではありません。そうであれば、httpd.confに入り、必要なものを有効にします。

REDbotのようなツールを使用して、サイトの応答ヘッダーをテストすることもできます。イメージを指しているようなリソースURLを選択してツールに貼り付けるだけで、どのヘッダがいくつかの推奨事項と共に返送されるのを確認するだけです。ドメインのrobots.txtルールに従い、リソースが許可されていない場合はチェックしません。

Gerbenと同様に、Firefoxのネットタブを使用すると、chrome開発ツールやその他の同等のWeb開発ツールが、どのヘッダが送受信されているかを確認するのに役立ちます。

Cache-Control publicも設定する必要はありません。また、ExpiresByTypeコールを使用している場合は、max ageを使用する必要はありません。 http://www.mnot.net/cache_docs/

そして例で学ぶ:この偉大なチュートリアルを読んで詳細情報については

それはlighthttpdNode.jsNginx、などのような他の一般サーバの設定例についてはhttps://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess

html5-boilerplateで行われているかチェックアウト参照: https://github.com/h5bp/server-configs

+0

@Anthonyがこの記事の最後にリンクしているhtml5定型句の例は非常に役に立ちました。例えば、私は 'jpg'の代わりに' jpg'を書いていました。ありがとう! –

関連する問題