关于Webview缓存和提速

作者: Cavabiao | 来源:发表于2015-08-12 21:14 被阅读3251次

    默认情况下的Webview缓存策略:

    1、如果返回头中有Cache-Control及Last-Modified:缓存时间内不会发送请求;只有当缓存时间失效(结合Cache-Control和Date进行计算),Last-Modified会被发送给服务器(If-Modified-Since头),服务器根据If-Modified-Since头判断返回304还是200。
    2、返回头中有Cache-Control但是无Last-Modified:缓存时间内不会发送请求;当缓存时间失效(结合max-age和Date进行计算),服务器直接返回200。
    3、当有Cache-Control和Expires同时存在,Expires将会被忽略。
    4、Webview会忽略ETag。
    结论:通过Cache-Control和Last-Modified对缓存进行控制,比WebSettings.LOAD_CACHE_ELSE_NETWORK会更加灵活。

    Webview提速:

    1、要么缓存(静态资源、接口缓存,动态资源、接口不缓存),这是普适方案;
    2、要么预加载(单个webview预加载,类似1元夺宝App的发现那样;也可以两个Webview预加载,一个加载缓存数据,一个请求网络数据,当网络返回和本地缓存速度差不多的时候效果可能不会太明显,具体问题具体分析),非普适方案,依赖使用场景。
    3、使用webview不得不接受速度慢的事实,和原生没法比。

    相关文章

      网友评论

      • 飞天舞乐:原生的WebView缓存限制比较大,而且缓存配置不灵活;我给大家推荐一个库,https://github.com/yale8848/CacheWebView
        这个库自定义实现WebView的缓存,使用很简单,欢迎大家拍砖讨论
      • 浮云而:你好,我设置了有网的时候缓存模式为LOAD_CACHE_ELSE_NETWORK,但是当我加载过一个网页以后再次加载的时候它不从缓存里面去取,而是联网加载呢?
      • Hunter琼:搂主 我用NSURLCache拦截缓存 这个只能缓存get资源,那post怎么办?能缓存吗?? 还有你说的预加载 怎么做了的???/
      • 没有黑眼圈de熊猫:你好,我们最近也遇到了webView加载缓慢的问题,能问下你说的这个缓存和预加载具体是什么意思吗?
        Hunter琼:缓存就是个坑 我们的webview太多了 我用NSURLCache

      本文标题:关于Webview缓存和提速

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