SQLの窓

2009年06月06日


少なくともIEでキャッシュを禁止する

Microsoft サポート オンラインには、以下のような文書があります。

[HOWTO] Windows 2000 で Web キャッシュを禁止する方法
<%
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>


実際問題、先頭の Response.Expires = 0 は、意味無いのですが、この処理によって以下のような HTTP ヘッダが返されます
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Fri, 05 Jun 2009 17:59:47 GMT
X-Powered-By: ASP.NET
pragma: no-cache
cache-control: private
Content-Length: 6
Content-Type: text/html
Expires: Thu, 04 Jun 2009 17:59:46 GMT
Cache-control: no-cache

結局、Response.Expiresabsolute は、過去の Expires(有効期限)なので、PHPで以下のように書きます
<?php
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );
?>


PHP では、Cache-control を二つ書いても、後に書いたほうしか有効になりません。これは正しい仕様で、ASP では複数出力できるくせにそのせいで予期せぬ動作をした経験があります。

よって、この Microsoft サポート オンライン の情報は信用してはならないという事で、あくまでガイドラインでしか無く、自分で最終的な判断をする必要があります。

pragma と Cache-control の違いは HTTP/1.0 と HTTP/1.1 の違いです。

経験から言うと、Expires の過去日付だけで問題が出た経験はまだありません。
タグ:IE
posted by lightbox at 2009-06-06 03:45 | PHP + WEBアプリ | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
PHP正規表現チェッカー
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり