:::: 菜单 ::::

不要!AIR网络数据缓存

5.17日,我在饭否AIR客户端中遇到“AIR打开XML后会缓存下来,导致不能及时刷新”的郁闷情况。按照设想,我需要点一下按钮就刷新网络数据的,可是数据被缓存了,AIR优先使用本地数据,不能及时更新,很是郁闷。后来只能使用“非正常手段”——

对付这种由于缓存导致的不能即使刷新,有一招,就是给请求的URL加个参数,比如请求a.xml?user=b;那就每次要刷新时改成请求a.xml?user=b&r=1; 这个r的值每次自增1,这样投机取巧,可以刷新到数据了.

今天在官网上转悠了一下,发现AIR应用中的URLRequest有俩属性能管事(哎呀,总算来个给草民作主的了~),它们是:
cacheResponse
useCache

cacheResponse用来设置成功返回数据后是否缓存,默认为true
useCache用来设置是否优先查找本地缓存的数据,默认true
这两个属性也可以在URLRequestDefaults类中设置默认值。

以后知道可以可以把不想缓存的URL请求设置下不要缓存了。另外,由于没搞过,所以暂时不清楚Flex中HttpService获取数据缓存归哪里管,谁知道?告诉我……

延伸阅读


  1. header(“Expires: Mon, 26 Jul 1997 05:00:00 GMT”);
    header(“Cache-Control: no-cache, must-revalidate”);
    header(“Pragma: no-cache”);

  2. 加一个时间戳就可以解决缓存问题了,开发AJAX时,也会遇到缓存这个问题的。
    var n:Number = new Date().getTime();
    service.url = “list.php?time=”+n;