10月 28, 2009
GAE/JでのURL Fetchで取得したデータがGoogleにキャッシュされてる?
RomExやThreadEx、したらばBPのサーバーサイドのサービスを
Amazon EC2からGAE/J(Google App EngineのJava実行環境)に少し前に移行しました。
それからしばらくして気付いたのですが、
データがどこかでキャッシュされているらしく、取得先のデータが更新されても、
その最新データを取得できるようになるまでに時差がある事に気付きました。
Amazon EC2の時はhttpclientを使ってデータを取得していましたが、
GAE/Jではそれが使えないので、HttpURLConnectionを使ってデータを取得するように変更していました。
最初はそのせいなのかなと思い、setUseCaches(false)を設定して取得するように修正しましたが、
相変わらずキャッシュされてるっぽい少し古いデータが帰ってきます。
そこで、同じソースでローカルサーバやAmazon EC2でも動かしてみましたが、
それらでは常に最新データが返ってきます。
これでキャッシュされたデータが返ってくるのはGAE/Jだけと分かったので、
リクエストするURLの最後に「”?” + HHmmss(時分秒)」を付与してリクエストするように修正してみました。
そしたらやっと常に最新のデータがすぐに取得できるようになりました。
その辺の情報ってどこかにあるんですかね?
キャッシュするとかしないとか、するならどれくらいの時間なのかとか、
設定できるならその方がいいんですが。
まぁ、結果オーライです。
と言う事で、RomEx、ThreadEx、したらばBPのサーバーサイドサービスは最新データがすぐに取得出来るように更新しました。


[...] GAE/JでのURL Fetchで取得したデータがGoogleにキャッシュされてる? – RIA S… [...]
[...] GAE/JでのURL Fetchで取得したデータがGoogleにキャッシュされてる? – RIA S… [...]