■画蜒?のキャッシ繝?
ページは新しいが、画蜒?は古いキャッシュを藹??照している理逕?
影響因子:ブラウザキャッシ繝?>プロキ繧?>ファイアウォー繝?>ロードバラン繧?>htaccessのようなサーバ設藹??
基本的な考え方・??キャッシュ縺?PHPページ軆??でのディレクティブで制御されるが、特に画像等はプロキシではキャッシュ期間が優先される場合がある(ブラウザ更新ボタンでスキップできるが、、)
1)ページ遷移時は、キャッシュがありExpire等が効いている場合は、完全にローカルキャッシュだけを使ってそもそもリクエストを送っていません。
(ちなみに、ページを進ん縺?(ブラウザの戻る機能縺?)戻ったときは大元縺?HTMLを含めてキャッシュが使繧?れたりします。)
2)リロードは大元縺?HTMLを藹??け藹??ったら、そのページ内のリソースについてレスポンスヘッダを確鐔??しに鐔??っています。その軆??果304 Not Modifiedが帰ってきて、実際にはキャッシュを使います。
3)スーパーリロードCtrl+F5(Ctrl+更新ボタ繝?)はキャッシュに関臀??な縺?、すべてのリソースを藹??得しなおしています。
リロードをしても表示されない時ブラウザのキャッシュ削除するといいのは、この辺りが上手く行っていないからだと鐔??える
どういうリクエスト/レスポンスの觸??れ?(304はトラフィックは觸??るが比較でサーバリソースを食う場合もある)
1)ブラウザのキャッシ繝? :Expire/max-ageのあるとき?、あるいはブラウザキャッシュ削髯?
2)ブラウザ→プロキシのキャッシュ :Cache refreshでの間隔で処理、あるいはブラウザ更新ボタ繝?
3)ブラウザ→プロキシ→サーバ縺?304 not modefied(ブラウ繧?/プロキシのキャッシュが使用される)
http://www.atmarkit.co.jp/ait/articles/0305/10/news002.html
http://blog.redbox.ne.jp/http-header-tuning.html
HTTPヘッダ(htttpヘッダはプログラムで制御できる)
Pragma
窶?Cache-Control(豎?逕?)-no-cache, max_ageディレクティブな縺?
窶?Age(レスポン繧?)
窶?Date(豎?逕?)
窶?Expires(エンティテ繧?)
窶?Last-Modified(エンティテ繧?)
窶?If-Modified-Since(リクエスト)
窶?If-Unmodified-Since(リクエスト)
窶?ETag(レスポン繧?)
窶?If-Match(リクエスト)
窶?If-None-Match(リクエスト)
窶?Range(リクエスト)
窶?If-Range(リクエスト)
ブラウザに臀??切キャッシュさせた縺?ない場合Cache-Control "no-cache" この辺りの動作は環藹??に臀??存する
ブラウザにキャッシュさせるが変更ないか都度確鐔??Cache-Control "max-age=0" or Expires "Mon, 26 Jul 1997 05:00:00 GMT"
ブラウザにキャッシュさせ都度確鐔??はそれほど藹??要ないCache-Control "max-age=秒謨?" or Expires "Mon, 26 Jul 2020 05:00:00 GMT"
Cache-Control: private webサーバから返されるコンテンツがただ一人のユーザのためのもので鐔??数のユーザが共有されるキャッシュに鐔??録されるべきではない
Cache-Control: must-revalidate キャッシュに鐔??録されているコンテンツが現在も有効であるか否かをWebサーバに藹??ず蝠?い合繧?せよ
metaタ繧?
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="0">キャッシュの有効期限,0=キャッシュさせない
no-store:キャッシュするな→ Webサーバから返却されるコンテンツをキャッシュする縺?
no-cache:キャッシュしても良いが、確鐔??してから使え→ キャッシュは使用しても良いが現在でも有効か否か確鐔??した上で使用しろ
no-cacheがキャッシュを使用しない設藹??に思えるが実際には、no-storeがキャッシュをさせない設藹??。大臀??の場合で縺?no-cache縺?OK
シリアルの藹??数を付ける
<img src="http://aaa/v.gif?27" />
<link type="text/css" rel="stylesheet" href="styles.css?20130420-1100">
.htaccess
<Files ~ ".(gif|jpe?g|png|ico|js|gz|otf|ttf|eot|woff)$">
Header set Cache-Control "max-age=2592000"
</Files>
プロキシサーバ
基本はどれだけの期間キャッシュを保つか縺?Cache refresh設藹??、他縺?httpヘッダのディレクティブで制御されると考える
Cache Refresh 設藹?? HTTPドキュメントの場合(4-8時間、5min、20%等複合)の更新間隔を保つ、ブラウザ更新ボタンで藹??得も可能だし
20%の諢?味は、1週間前縺?10080前にできた場合これを1440/10080=14.2%となってまだ新しいとみなす
Last-Modified 要素を 0.1 に設定した場合、最後の藹??更が 10 日前に鐔??繧?れたドキュメントのケースだとプロキシはこの鐔??素の諢?味を、ドキュメントが 1 譌? (10 * 0.1 = 1) の間変更されない、と解釈します。その場合、ドキュメントのチェックが 1 日以内に藹??行されている場合、プロキシはキャッシュからドキュメントを返します
使用されたキャッシュの回謨?
キャッシュの容驥?
Internet Cache Protocol (ICP) はキャッシュ・??プロキシ・??間の対話を可能で履歴を共有
(Sun Java System Web Proxy Server) https://docs.oracle.com/cd/E19636-01/819-3160/agcache.html
http://trafficserver.readthedocs.io/ja/latest/admin-guide/configuration/cache-basics.en.html
(Squid) http://d.hatena.ne.jp/takami_hiroki/20101006/p1
(Vanish) http://www.kumoyanet.com/420/