HTML5学习之离线存储基础知识

AppCache离线存储详解
本文详细介绍了HTML5中AppCache离线存储的工作原理及使用方法。解释了如何通过manifest属性指定缓存文件,以及CACHE MANIFEST、NETWORK和FALLBACK三部分的作用,并提供了具体的示例。

原理

基于一个新建的.appcache文件的缓存机制(非存储技术),通过这个文件上的解析清单离线存储资源,这些资源会像cookie一样被存储下来.在之后当网络处于离线状态时,浏览器会利用这些被离线存储下来的数据来展示页面.

使用离线存储

html新增了一个manifest属性,可用于指定当前页面的appache文件, 创建一个和html同名的appache文件,比如index.html,就可以创建一个index.appache文件.

<!DOCTYPE HTML>  
<html manifest = "cache.manifest">
    //网页内容...
</html>  
复制代码

离线存储的manifest组成部分

manifest(.appcache)文件是简单的文本文件,它告知浏览器被缓存的内容和不缓存的内容.

首先展示一下cache.manifest文件的书写方式,如:

CACHE MANIFEST
# 2018-05-12 v1.0.0
/style.css
/logo.gif
/index.js

NETWORK:
login.asp

FALLBACK:
/html5/ /404.html
复制代码

离线存储的mainfest一般由三个部分组成:

  1. CACHE MANIFEST:
    必选,里面包括需要被离线存储的资源列表,在此标题下列出的文件将在首次下载后进行缓存.

        CACHE MANIFEST 
        # 2018-05-12 v1.0.0
        /style.css
        /logo.gif
        /index.js   
    复制代码

    表示当manifest文件加载后,浏览器会下载网站当前目录的style.css , logo.gif , index.js三个文件,然后,无论用户什么时候和网络断开,这三个文件都还是可用的.

  2. NETWORK:
    可选,里面包括不会被缓存的内容,在次标题下列出的文件只有在在线的情况下才能被访问,如果在CACHE和NETWORK中有一个相同的资源,那么这个资源还是会被离线存储,也就是说CACHE的优先级更高.

    NETWORK:
    login.asp
    复制代码

    表示login.asp不会被缓存起来,且离线时不可以使用.
    可以使用星号来指示所有其他资源/文件都需要因特网连接:

    NETWORK:
    *
    复制代码
  3. FALLBACK:
    可选,表示如果第一个资源访问失败,就使用第二个资源替换. 比如:
    /html/ /404.html表示用"404.html"替代当/html/目录中的所有文件方访问失败时的页面.
    //404.html表示用"404.html"替代当前目录中的所有文件.
    *.html/404.html表示用"404.html"文件代替所有html文件.

    FALLBACK:
    /html5/ /404.html
    复制代码

    表示当无法建立因特网连接时,用"404.html"替代当/html5/目录中的所有文件.

注意:以 "#" 开头的是注释行,但也可满足其他用途.应用的缓存会在其 manifest 文件更改时被更新.如果您编辑了一幅图片,或者修改了一个 JavaScript 函数,这些改变都不会被重新缓存.更新注释行中的日期和版本号是一种使浏览器重新缓存文件的办法。

浏览器如何对离线存储的资源进行管理和加载

  1. 在线情况下
    浏览器发现html头部有manifest属性,它会请求manifest对应文件.
    如果是第一次访问,那么浏览器就会根据manifest文件的内容下载相应的资源并且进行离线存储。
    如果已经访问过app并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,那么就会重新下载文件中的资源并进行离线存储.(????)

  2. 离线情况下
    浏览器就直接使用离线存储的资源.

更新缓存的方式

一旦文件被缓存,则浏览器会继续展示已缓存的版本,即使修改了服务器上的文件.为了确保浏览器更新缓存,需要更新manifest 文件.更新方式有:

  1. 更新manifest文件
    给manifest文件添加或删除文件,或者没有添加或删除文件,只修改了文件,可以通过更改版本号等来更新manifest文件.(论#注释的重要性!)
  2. 通过js操作手动更新 window.applicationCache.update()
  3. 清除浏览器缓存
    如果用户清除了浏览器缓存(手动或用其他一些工具),都会重新下载文件。

参考网站:
https://segmentfault.com/a/1190000006984353 https://blog.youkuaiyun.com/zhouziyu2011/article/details/58588546 https://www.cnblogs.com/shoestrong/p/6435169.html

转载于:https://juejin.im/post/5af68e416fb9a07aa83ece7c

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值