2016-05-09 4 views
0

私はこのように、通常のユーザーのプロフィール画像を取得するAppceleratorのアプリ、構築しています:Appceleratorでキャッシュされた画像を削除することはできますか?

<ImageView id="profileImage" defaultImage="/images/default_profile.jpg"></ImageView> 

をし、コントローラは、サーバから画像を取得する(URLは、ユーザーごとに一意です):

$.profileImage.image = "myserver.com/profile/1/image" 

問題は、私はプロフィール画像(サーバーに新しいものを送る)を更新することであるが、それは同じURLを使用しているため、コンテンツが更新されることはありません。

例えば: 1)myserver.com/profile/1/image画像 "X" 2)私は、サーバー 3に "Y" を送信)myserver.com/profile/1/image取得画像「X」。それはAppceleratorによってキャッシュされるためです。もちろん、私は "Y"を取得したいと思います。

Appceleratorでキャッシュされた画像を削除することはできますか?

get param(「?date = now()」など)を設定するのはここでの答えではありません。別のビューでプロファイルイメージを取得する必要があり、キャッシュしなければなりません。

ありがとうございます。

ギュル

答えて

2

チタンのリモート画像は、常にURLに基​​づいて自動的にキャッシュされます。だから、

、あなたのタスクが完了するために、あなたがそれを行うには、2つの方法があります。

  1. 変更し、サーバからのURL(私はそれはアプローチは非常に良い複雑ではありません知っています)。 iOSとAndroidの両方で

  2. や機能上、この関数を使用

    function clearCacheDirectory() { 
        try { 
         Ti.API.info("deleting cache..."); 
         var temp = Ti.Filesystem.getApplicationCacheDirectory(); 
    
         var cacheDir = Titanium.Filesystem.getFile(temp); 
    
         cacheDir.deleteDirectory(true); 
    
        } catch(exc) { 
        Ti.API.info("Cache error = " + exc); 
        } 
    } 
    
    • キャッシュディレクトリのすべてのコンテンツを削除し、それが動作します
    • は、それはあなたがあなたの問題を解決するために必要なすべてのですTi.FileSystem hereを参照してください。 Prashant SAINIが言ったよう

おかげ

0

は、私にとって唯一の作品は、たとえば、urlにランダムな保存を追加して、各ImageViewのがロードされるurlを変更した:

var randfake = new Date();  
$.userPhoto.image = /serverpath/images/?randfake='+randfake.getTime(); 
関連する問題