25

Google の PageSpeed を使用して自分の Web サイトでテストを実行したところ、「ブラウザのキャッシュを活用する」ことを推奨され、次のリソースが提供されました。

http://code.google.com/speed/page-speed/docs/caching.html#LeverageBrowserCaching

このリソースでは、http ヘッダーの有効期限を実際に変更する方法については説明していません。.htaccess を介してこれを行いますか? キャッシングをできるだけ長く設定したいと思います (最大 1 年という Google のポリシーに違反することなく)。

推奨される設定 (カスタム php 主導のソーシャル ネットワーキング コミュニティ向け) に関するアドバイスをいただければ幸いです。

4

2 に答える 2

29

ルートの .htaccess で:

<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/x-javascript "access plus 216000 seconds"
  ExpiresByType text/html "access plus 600 seconds"
  ExpiresByType application/xhtml+xml "access plus 600 seconds"
</IfModule>

そして、次のようにします。

<IfModule mod_headers.c>
<FilesMatch "\\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "max-age=2692000, public"
</FilesMatch>
<FilesMatch "\\.(css)$">
Header set Cache-Control "max-age=2692000, public"
</FilesMatch>
<FilesMatch "\\.(js)$">
Header set Cache-Control "max-age=216000, private"
</FilesMatch>
<FilesMatch "\\.(x?html?|php)$">
Header set Cache-Control "max-age=600, private, must-revalidate"
</FilesMatch>
Header unset ETag
Header unset Last-Modified
</IfModule>

これは、私が管理するすべてのプロパティで使用するコードとまったく同じであり、私 (および PageSpeed) に最も満足のいく結果をもたらします。特定のルールについて議論する人もいるかもしれませんが、それでは満足していると言ったのですが、PageSpeed は確実に満足しています。

于 2010-04-20T16:34:17.170 に答える
1

htaccess と php の両方で実行できます。通常、実際の html は動的なデータベース主導のコンテンツであるため、強制的にキャッシュする必要はありません (header()必要に応じて php 関数を使用して実行できます)。キャッシュしたいのは外部css&javascript、画像ファイルです。

.htaccess ソリューションについては、こちらを参照してください: http://www.askapache.com/htaccess/apache-speed-expires.html

于 2010-04-20T16:23:08.883 に答える