« 前のエントリー   次のエントリー » 

2006年04月25日

■ JavaScriptやCSSの更新時にキャッシュから読ませない

おそらく架空のストーリ

プログラマ「プログラムを更新しました」
デバッガ「いきなりエラーがでますよ!動作確認したんですか!」
プログラマ「え、私のところでは動くけど…、キャッシュクリアしました?」
デバッガ「キャッシュをクリアしたらエラーがでなくなりました」
デバッガ「でも、ユーザ全員にキャッシュをクリアさせるの?」

今日、JavaScriptやCSSの更新時にキャッシュから読ませない方法を知りました。
先人達は偉大すぎます。


<link href="common.css" rel="stylesheet" type="text/css">

この記述だとサーバ側の「common.css」を更新しても、
クライアント側のキャッシュの「common.css」が使用されて、
サーバ側の変更が反映されない可能性があります。

これをcssやjsにクエリー文字列を付加することで、
「common.css」ではなく、「common.css?20060425」でキャッシュさせます。

<link href="common.css?20060425" rel="stylesheet" type="text/css">
<script src="common.js?20060425" language="javascript" type="text/javascript"></script>

cssやjsを更新した際はクエリ文字列を変更します(20060425→20060426)

<link href="common.css?20060426" rel="stylesheet" type="text/css">
<script src="common.js?20060426" language="javascript" type="text/javascript"></script>

「common.css?20060425」はキャッシュされていますが、
「common.css?20060426」はキャッシュされていないので、
キャッシュは使用されず、サーバ側の「common.css」が実行されます。

クエリ文字列の内容は特に処理に影響は与えないので、
何を付加してもかまいませんが、日付やバージョンをつけるのが
管理しやすいです。

トラックバックURL

このエントリーのトラックバックURL:
http://syuki.sakura.ne.jp/mt/mt-tb.cgi/170

トラックバック

» JavaScriptメモ:javascript(.jsファイル)をキャッシュさせない from KUMA TYPE
ブログパーツのようなものを何かつろうと思っているのですが、とりあえずいろんなもの... [Read More]

» jsやcssをキャッシュさせない方法 from 独身SEの世迷言
ブラウザに新たにキャッシュされるタイミングとそれを参照するタイミングが良く分からないJSとCSS 常に最新のファイルを読み込ませるには下記の方法でおk ... [Read More]

コメント

そんな方法があるんだー
現実の話で困ってました
ぶっちゃけ、別名CSSファイル作ってましたよorz
さっそく試してみます
お役に立てたならなによりです。
間違いやアドバイスがあればフォローをお願いしますね。
HTMLで以下のように記述していました。
'<meta http-equiv="pragma" content="non-cache">

javaでのキャッシュ制御と、HTMLでの制御と違いはないものなのでしょうか?
どちらの方がメリットとかあるのか分れば教えていただけませんか?
>noriさん

■クエリ文字列による制御(このエントリの方法)
・キャッシュがほぼ抑止できる(抑止できない条件があるかもしれないが私は知らない)

■metaタグによる制御(noriさんが記載されている方法)
・条件によってキャッシュを抑止できない

と理解しております。
ちなみにmetaタグのスペルを間違われています。
<参考>
http://www.tagindex.com/html_tag/page/meta_06.html
なつかしいエントリだ。2年前かぁ…。
この2年はなかなか濃ゆい2年だったわ。

metaタグだと、proxyがあると抑止できないと思います。
当時の開発環境もproxyがあってmetaタグではダメでした。
クエリ文字列だと大丈夫でしたね。

このときのシステム、今はどうなってるんだろ(;´∀`)

コメントする