Weex下载Js文件的系统缓存问题

公司项目的项目尝试Weex,发现新部署到服务的js文件没有下载,渲染的还是原有的js文件,应该是WeexSDK中的Request采用了默认的缓存策略了,做了一下修改如下:
一、找到源码WXSDKInstance.m文件下的renderWithURL方法,可以看到request中的cachePolicy默认是NSURLRequestUseProtocolCachePolicy

renderWithURL

二、我们可以点进去看一下,会有如下选择:

typedef NS_ENUM(NSUInteger, NSURLRequestCachePolicy)
{
    NSURLRequestUseProtocolCachePolicy = 0,

    NSURLRequestReloadIgnoringLocalCacheData = 1,
    NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, // Unimplemented
    NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,

    NSURLRequestReturnCacheDataElseLoad = 2,
    NSURLRequestReturnCacheDataDontLoad = 3,

    NSURLRequestReloadRevalidatingCacheData = 5, // Unimplemented
};

苹果提供了7种缓存策略,但是实际能使用的其实就4种,我们就按照字面意思翻译一下来理解
1、NSURLRequestUseProtocolCachePolicy = 0,
NSURL请求使用协议缓存策略,意思是说如果缓存不存在,则从服务器下载,并且会根据http策略自己选择是否缓存,下一次调用的时候根据上一次的http协议缓存策略来决定是用缓存还是重新加载,本人对于http协议研究不深,也就是知道一些缓存方面的参数,例如If-Modified-Since、Cache-Control等。可能也是项目这边的http协议缓存策略制定问题,导致iOS这边如果用这个策略,则会一直加载本地文件。

2、NSURLRequestReloadIgnoringLocalCacheData = 1
NSURL请求重新加载忽略本地缓存数据

3、NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4 // Unimplemented
苹果暂时没有实现此技术

4、NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData
和NSURLRequestReloadIgnoringLocalCacheData一样,忽略本地缓存,直接发送请求。

5、NSURLRequestReturnCacheDataElseLoad = 2
NSURL请求返回缓存其他数据加载,意思是有缓存就用缓存,没有就加载。

6、NSURLRequestReturnCacheDataDontLoad = 3
NSURL请求返回缓存数据不加载,意思是有缓存就用缓存,没有缓存也不从服务器加载,应该会被当作加载错误处理,这种方式会比较常用在离线模式。

7、NSURLRequestReloadRevalidatingCacheData = 5, // Unimplemented
苹果暂时没有实现此技术

三、由于我这边自己制定了Weex的js文件本地缓存以及更新策略,所以基本只要走到Request这里,则认定都需要从服务器下载,所以我这边根据上面的内容,直接使用NSURLRequestReloadIgnoringLocalCacheData这个策略就可以了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,076评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,869评论 18 139
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 3,707评论 2 7
  • 摘要:weex 旨在兼顾web动态性与native的用户体验,如果想将两者的优势最大化,那么缓存就显得格外重要,本...
    猫耳呀阅读 370评论 0 1
  • 作为一名医药行业市场部负责人,年底最痛苦的事(当然对于老司机这是他们最兴奋的事情)莫过于制定第二年的营销策...
    伴夏陌上阅读 1,124评论 0 3