LoginSignup
2
2

More than 5 years have passed since last update.

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

Posted at

サーバ側のリソースファイルを更新してもアプリ上でダウンロードしたファイルの
中身が変わっていなかったので、その原因を調べてみた。

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?

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2