Android
Titanium
iOS
HTTP

Titanium.Network.HTTPClientでキャッシュを無効にする方法

More than 3 years have passed since last update.

サーバ側のリソースファイルを更新してもアプリ上でダウンロードしたファイルの

中身が変わっていなかったので、その原因を調べてみた。

App.Properties.getString("url", "http://XXXXXXXX.jp/app.json")

上記コードで、接続先を取得しているんですが、

urlのプロパティがないときに第2引数で指定しているURLにアクセスします。

実装中のコードは、urlのプロパティがないため、

毎回第2引数のURLにアクセスしてapp.jsonを取得してくる動きになってます。

ただ、実際に動かしてみると、

サーバ側のapp.jsonを変更しても、jsonの内容が変わらない現象が発生しました。

サーバへのリクエスト時に、Network.HTTPClientを使ってアクセスしているんですが、

そこのドキュメントを読んでみたところ、cacheを制御するフラグがあり、

フラグの値を変更することで、cacheを無効にできるみたいです。

var client = Titanium.Network.createHTTPClient({

onload : function(e) {
// ------- //
},
cache : false,
});

このフラグを追加したところ、無事、更新後のjsonファイルを取得できるようになりました。

ちなみにこのフラグは、iOSのみで動くらしく、Androidでcacheを無効にするには、

client.setRequestHeader('Cache-Control','no-cache');

client.setRequestHeader('Cache-Control','no-store');

httpクライアントのヘッダ内に、Cache-Controlの定義が必要だそうです。

以下は参考にさせていただいたサイトです。

参考:


Titanium.App.Properties

Titanium.Network.HTTPClient caches responseData. How do I prevent that?