web-dev-qa-db-ja.com

ブラウザキャッシュ制御

最初:私はプログラマーではなく、HTMLとCSSを知っているデザイナーなので、限られた知識と理解のために事前にそうしています: )私のウェブサイトのスケルトンは、単一のHTMLと、コンピューターで編集し、必要に応じてドメインFTPにコピーするいくつかのCSSおよびJSファイルに基づいています。これらのファイルは私が作成したものではありませんが、できる限り編集します。

2番目:私はGoogleのPageSpeed Insightを使用してウェブサイトをチェックしています。低スコアの主な部分は、ファイルキャッシングの欠如または間違った結果です。 私はかなり問題を解決しようとしてウェブを見回しましたが、解決策を理解していないか、関連性はありません(たとえば、WordPressサイトなど)。

私の質問:html/css/phpのコード編集を使用してサイト全体(css、js、画像ファイルなど)にキャッシュ制限を追加するにはどうすればよいですか?/other(?)ファイル。

制限を月単位にしたい(変更が頻繁に発生しない)。問題は主に、更新してもファイル名が変更されない画像にあります。

注:私のサイトはGoDaddyで、Apache 2.0サーバーを使用していると思います。 。htaccess file not cacheGoogle Pagespeedは、キャッシュが既に有効になっている場合にブラウザのキャッシュを活用するように指示しています を読みましたが、それらを完全には理解していませんでした。そのようなコードはどこでどのように使用しますか?私のためにそれを詳述することができれば、それは答えかもしれません。

ありがとう


編集は必要に応じてここに追加されます:

1
Yar

.htaccessは、ディレクティブを追加してファイルのヘッダーを変更できるファイルです。以下のコードをhtaccessに追加して、すべての種類のファイルの有効期限を決定できます。デフォルトの有効期限は7日間です。次に、ファイルのタイプがリストにある場合、Apacheはデフォルトではなくディレクティブを選択します。

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/x-icon                              "access plus 1 year"
ExpiresByType image/jpeg                                "access plus 1 month"
ExpiresByType image/gif                                 "access plus 1 month"
ExpiresByType image/png                                 "access plus 1 month"
ExpiresByType application/font-woff                     "access plus 1 month"
ExpiresByType application/x-font-woff                   "access plus 1 month"
ExpiresByType application/font-ttf                      "access plus 1 month"
ExpiresByType application/x-shockwave-flash             "access plus 1 month"
ExpiresByType application/pdf                           "access plus 7 days"
ExpiresByType application/javascript                    "access plus 7 days"
ExpiresByType text/css                                  "access plus 7 days"
ExpiresByType application/atom+xml                      "access plus 1 hour"
ExpiresByType application/rdf+xml                       "access plus 1 hour"
ExpiresByType application/rss+xml                       "access plus 1 hour"
ExpiresByType application/json                          "access plus 0 seconds"
ExpiresByType application/ld+json                       "access plus 0 seconds"
ExpiresByType application/schema+json                   "access plus 0 seconds"
ExpiresByType application/vnd.geo+json                  "access plus 0 seconds"
ExpiresByType application/xml                           "access plus 0 seconds"
ExpiresDefault "access plus 7 days"
#ExpiresByType text/html "access plus 0 seconds"
#ExpiresByType text/plain "access plus 0 seconds"
#ExpiresByType application/octet-stream "access plus 0 seconds"
</IfModule>

あなたが開発者である場合、あなたは私に興味深いフィードバックをもたらすことができます。これらの有効期限がhtmlとphpにとって問題かどうかを知りたいです。説明してみましょう。ファイルを変更しても、キャッシュから古いページを取得しますか、それとも更新したページを取得します。この種の問題がある場合はお知らせください。キャッシュに問題がある場合は、コードの最後の行のコメントを解除します。

次に、取得する1つのphpページのヘッダーを表示できる場合

HTTP/1.1 200 OK
Date: Sat, 10 Oct 2015 16:20:14 GMT
Server: Apache/2
X-Powered-By: PHP/5.6.13
Vary: Cookie,User-Agent
Cache-Control: max-age=604800
Expires: Sat, 17 Oct 2015 16:20:14 GMT 
Content-Type: text/html; charset=UTF-8

10月17日マイナス10 oct = 7日(デフォルトルール)および604800秒= 7日

次に、jpg urlのヘッダーを取得する場合:

HTTP/1.1 200 OK
Date: Sat, 10 Oct 2015 16:25:03 GMT
Server: Apache/2
Last-Modified: Fri, 04 Sep 2015 16:49:12 GMT
ETag: "a6d-51eeeadece009"
Accept-Ranges: bytes
Content-Length: 2669
Cache-Control: max-age=2592000
Expires: Mon, 09 Nov 2015 16:25:03 GMT
Content-Type: image/jpeg

09 11月マイナス10月= 2592000秒= 30日= 1ジェネリック月

1