fetchやxhrを使った時にIEが勝手にキャッシュする問題を解決する

fetchやxhrを使って非同期通信をしているとIEでは勝手にキャッシュからデータを取得してサーバーにリクエストしないことがある。

そういう時はIf-Modified-Sinceヘッダーを追加してリクエストするとよい。

fetch('url', {
	defaultHeaders: {
		'If-Modified-Since': 'Thu, 01 Jun 1970 00:00:00 GMT'
	}
});
xhr.setRequestHeader('If-Modified-Since', 'Thu, 01 Jun 1970 00:00:00 GMT');

If-Modified-Sinceは指定した日時より新しいファイルがサーバーに存在する場合のみ取得するという条件つきリクエストで、この例では、キャッシュを実質的に無効にしている。

以下はIf-Modified-Sinceヘッダーの書式だ


If-Modified-Since: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT

IEはよくわからないタイミングでキャッシュを利用するのでこのヘッダーは必須なように思われる。IEの寿命が尽きるまで・・・

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です