トップ  > web開発  > キャッシュ  > 記事

No.1187 ブラウザキャッシュ

◆HTTPレスポンス・ヘッダにてキャッシュをつかさどるもの
(1)Last-Modified(最終更新日時)
(2)Expires(有効期限)
(3)Cache-Control(キャッシュコントロール)

※参考:キHTTP/1.1仕様のRFC2616
その他:Etag

◆metaタグによる「キャッシュしない」
--------------
(1) <meta http-equiv="Pragma" content="no-cache">
(2) <meta http-equiv="Cache-Control" content="no-cache">
(3) <meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT">
--------------
(1)・・・HTML1.0の仕様への対応
(2)・・・HTML1.1の仕様への対応


◆IEの設定
デフォルトでは「自動的に確認する」になっている
⇒更新の確認ルールがよく分からない・IE起動時でさえみないっぽい
---------
抜粋
以前表示したページに戻った時、そのページが更新されているか通常は確認されませんが、Microsoftの説明(*2)では「Web ページの動作の特徴を認識するアルゴリズムが使用されます」とあります。項目順位から推測すると、確認頻度は「Internet Explorerを起動するごとに確認する」より低いと考えられます。デフォルトではこの設定になっていると思います。
---------

◆Ctrl+F5
強制的にキャッシュをみないでリクエストする

◆PHPでのヘッダー出力
// 日付が過去
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');

// 常に修正されている
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');

// HTTP/1.1
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);

// HTTP/1.0
header("Pragma: no-cache");
◆キャッシュのステータス
none 何もしない(キャッシュに関するヘッダを出力しない)
nocache クライアント/プロキシキャッシュ不許可
private クライアント許可/プロキシ不許可
private_no_expire クライアント許可/プロキシ不許可
※Expiresヘッダ(有効期限)を出力しない
public クライアント許可/プロキシキャッシュ許可
個人的に調べたところですが、nocacheが一番安全っぽいですけど「キャッシュするんじゃないよ」というヘッダに従うかどうかはブラウザやプロキシの設定次第みたいです(汗)。
またieの「ページの有効期限...」もあります。

noneはpublicに近い状態で、キャッシュの有効期限について、たとえばieなら「自動的に確認する」となる模様。
だからprivate_no_expire(有効期限なしのキャッシュ)よりも上手に立ち回ってくれる感じです。

sslなどの暗号化されたページに関してはプロキシにキャッシュされたとしても問題ないものと思われます。
キャッシュが効いたほうが、リクエストが発生しないのでサーバにも優しいというのもあります。

ちなみにYahooは
普通のページはキャッシュが有効で
ログイン後のページは
Cache-Control: private
Pragma: no-cache
Expires: Thu, 05, Jan 1995 22:00:00 GMT
みたいになってました。

Pragma: no-cacheがプロキシに有効みたいで(といっても先に書いたように従わないプロキシもあるかも)、それでいてprivateを指定しているというなんとも変わった設定です。
プロキシになるべくキャッシュさせないという考えみたいです。
またなるべくブラウザの戻るを必要としないような遷移のさせかたになっているように感じます。


引用元

更新:2009/07/22 13:35 カテゴリ: web開発  > キャッシュ ▲トップ

Python

フロントエンド開発

Linux

web開発

サーバ管理

GCP

svn・git

ソース・開発

プロマネ

HTML・CSS

JavaScript

Alexa

Docker

webサービス運用

webサービス

Mac

MySQL

PHP

FuelPHP

ツール, ライブラリ

ビジネス

テンプレート

プレゼン

マネタイズ

負荷・チューニング

Windows

メール

メール・手紙文例

CodeIgniter

オブジェクト指向

UI・フロントエンド

cloud

マークアップ・テキスト

Flash

デザイン

DBその他

Ruby

PostgreSQL

ユーティリティ・ソフト

Firefox

ハードウェア

Google

symfony

OpenPNE全般

OpenPNE2

Hack(賢コツ)

OpenPNE3

リンク

個人開発

その他

未確認

KVS

ubuntu

Android

負荷試験

オープンソース

社会

便利ツール

マネー

Twig

食品宅配

WEB設計

オーディオ

一般常識

アプリ開発

サイトマップ

うずら技術ブログ

たませんSNS

rss2.0