最近はウェブデザイナーさんの口からも Ajax という言葉が、当たり前のように出てきます。ま、それに関係してと言うか、色々思うこともあり、Ajax に関係する事でもちょろっとUPしよかなーっと思った次第w
・ ブラウザのキャッシュを回避する方法
・ 文字化けを回避する方法
Ajax というか非同期通信に限らず、変更した内容が反映されない事がありますが、それは単にブラウザのキャッシュ(つまり古いデータ)が読み込まれるためで、簡単な回避策があります。
URL 後ろのパラメータクエリに毎回違う値をくっつける。だけ。
http://www.hogezou.com/hogeru.cgi?hoge=*
*にランダムな値や現在時間なんかですね。パラメータ名はサーバ側(この場合は cgi)に影響がなければなんでもいいです。
これだけで、一致するキャッシュがないためにちゃんと読みに行きます。
んで、文字化けはエンコード、デコードをするだけ。爆
つまりクライアント --> サーバなら、Javascript で escape してやる。んでサーバでデコードする。と。
追記:
いかんいかん。これじゃあまりに不親切ですね。
参考サイトにリンク貼っときます。
PHPとJavaScriptのURIエンコードを比較(JavaScript++かも日記)
ここには色々お世話になってます。
うーん。なんだかなぁ。
もし、良かったら色々思った理由でも聞いてやってください。という事でつらつらと・・・
昨日、外部のウェブデザイナーさんと打合せをしたんですが、GoogleMaps や表計算で Ajax を教えて?w頂きました。
ま、社内的な事情でプログラマって事は伏せてたんですが、やっぱ一般の認識には疑問を感じることが多いすねぇ。
端的に言ってしまうと Javascript = Ajax 汗・・・。
というか、違いは認識してるけど、非同期通信を使う事の利点や必要性が分かってなかったりする。
それ、通信必要なの? クライアントサイドの script だけでいーじゃん?なんてのは当たり前、ページ遷移のない結果表示がすでに Ajax だとおもってらっしゃる事も ^^;
ちょっとイジメてみよかな。なんてイタズラ心が起きたんで「ウチもバリバリ Ajax 使ってますよ。」なんて言ったら、上の2つの問題が出てきたんですよ。コレがまた。びっくりなことに。
あげく掌を返して Javascript の不備?をつっつきなさる。そりゃね。色々問題も抱えてるよ。確かに。
んでも、無かったらブログなんて成り立たねーじゃん。てか、自慢げに Ajax 談義始めたのは、誰なんじゃー。っと思った訳です。はい。
てな具合w
ま、ここまでご立派な方は初めてですがw
2006年11月10日
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/27148814
この記事へのトラックバック
http://blog.seesaa.jp/tb/27148814
この記事へのトラックバック



で書きましたとおり、ブラウザによっては通信をキャッシュしたものを破棄しませんので、どんどんキャッシュディレクトリに溜まっていくことになります。
よって、CGI側でローカルキャッシュのコントロールのヘッダを入れてやる必要があると考えますが、その点に関してはいかがでしょうか。
キャッシュさせない方法としては・・・。
参考:http://tech.bayashi.net/pdmemo/browsercache.html
その他、htaccess を用いる事もできます。
http://w3g.jp/others/htaccess/cache_control
php の場合ですと php.ini を設定してやるのもラクです。
http://jp.php.net/manual/ja/ini.php
また、サーバソフト自体で制御する事も可能です。
ただし、上の参考URLにある通り、キャッシュ制御がうまく行かない事もあります。
HDリソースの浪費に関しては、キャッシュ容量が規定されているため、大した弊害ではないと思っていますがどうでしょう?
※ 調査した訳でなく、思ってるだけですがw
キャッシュさせない設定については、実際に設定を入れてみてキャッシュされていないか確認することが大事ですね。
>HDリソースの浪費に関しては、キャッシュ容量が規定されているため、大した弊害ではないと思っていますがどうでしょう?
確かにキャッシュ容量が制限されているわけですが、キャッシュ容量がAjax通信のキャッシュで埋め尽くされてしまっても本来のキャッシュの意味をなさないとも思います。それよりも、通信させちゃいけない内容を通信させちゃう実装が多いですから、そもそもそんな内容通信させないようにするべきなのでしょうが、プログラムでもキャッシュに残らないように意識するのがいいと思いました。
テストと確認は大事な事ですが、テストと実際の稼働では事なると考えておいた方が良いかと思います。
キャッシュしているのはあなたのパソコンだけとは限らない^^;
それが全て確認できる環境での運用ならば問題ありません。が・・・
getで。
そうでなければ、更新データが必須である場合、URLによる対策も必須と考えた方が無難ですか。
あれから実際に本稼働させたシステムがあるのですが、getに毎回違うクエリーを付ける方法と、ヘッダによるキャッシュコントロールの記述を併用する形に落ち着きました。
ユーザがキャッシュを覗いたりした場合、当方からのキャッシュに埋め尽くされていることで苦情が来ないようにするためにそうしました。運用後の対応がより楽になるようにする工夫だと思っています。