是否可以在Appcelerator中删除缓存的图像?

时间:2016-05-09 23:46:13

标签: caching appcelerator appcelerator-titanium

我正在构建一个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是一个图像&#34; X&#34; 2)我发送了一个&#34; Y&#34;到服务器 3)myserver.com/profile/1/image获取图像&#34; X&#34;。因为它是由Appcelerator缓存的。但是,当然,我想得到&#34; Y&#34;。

那么可以在Appcelerator上删除缓存的图像吗?

设置一个get参数(例如&#34;?date = now())&#34;)这里不是答案,因为我必须在不同的视图中获取配置文件图像,我必须有这个缓存。

提前致谢。

吉尔

2 个答案:

答案 0 :(得分:3)

Titanium中的远程图像始终根据其网址自动缓存。

因此,要完成任务,您有两种方法可以完成:

  1. 从服务器更改网址(我知道这很复杂,也不是很好的方法)。

  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);
       }
    }
    
    • 上述功能将删除缓存目录的所有内容,并且适用于iOS和Android
    • 请参阅Ti.FileSystem here,这就是解决问题所需的全部内容。
  3. 由于

答案 1 :(得分:0)

正如Prashant Saini所说,对我而言唯一的作用就是更改url每个图像视图的加载,添加随机存储到url,例如:

var randfake = new Date();    
$.userPhoto.image = /serverpath/images/?randfake='+randfake.getTime();