美文网首页Weex开发技巧weex社区我爱编程
Weex下载Js文件的系统缓存问题

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

作者: _安迪_ | 来源:发表于2018-04-13 16:13 被阅读36次

公司项目的项目尝试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这个策略就可以了。

相关文章

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

    公司项目的项目尝试Weex,发现新部署到服务的js文件没有下载,渲染的还是原有的js文件,应该是WeexSDK中的...

  • weex入门之开门篇

    weex简介 playground应用下载weex代码在线编辑工具 环境配置 node.js官网下载Sublime...

  • iOS webview 清除js缓存

    webview清除缓存不能清除js缓存 问题: uiwebview加载的是本地的html 文件(包含 HTML j...

  • jb.js?version=1.2.6

    介绍 客户端会缓存css或js文件,改变版本号,客户端浏览器就会重新下载新的js或css文件,在js或css后加?...

  • Apache配置静态缓存

    老问题,什么是静态缓存?为什么配置静态缓存? 这里的静态文件指的是图片、 js、 css 等文件,用户访问一个站点...

  • Weex的JS缓存实现

    原理 服务端将weex可用的模块打包成JS Bundle下发到客户端,JS Bundle没有分具体模块所以文件较大...

  • css、js文件缓存问题

    问题:浏览器为了提升用户体验,会将css、js文件缓存下来 解决: 在css、js文件后面添加版本号 =>

  • 小程序 获取wxml中的id值,缓存并取值

    1、wxml文件中 绑定id值 2、js文件中 获取id值 并缓存 3、detail.js文件中 获取缓存值

  • iOS-Weex-navigator组件 本地页面跳转整理

    第一步:weex端js文件platDifferent.js 第二步:weex端跳转方法 第三步:iOS端 导入bu...

  • RxJs

    脚本加载 = 脚本下载 + 执行 一般是同时 下载4个js文件 依次执行先返回的js文件 回调地狱 问题 一个变...

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/taickftx.html