[html] HTML5的文件离线存储怎么使用,工作原理是什么?

haizhilin2013
2019-04-20 05:04:31 星期六
html
                    
                        
HTML5的文件离线存储怎么使用,工作原理是什么?
Comments per page
< Page 1 / 4 >
hbl045 2019-05-05 04:43:27

localstorge 利用浏览器的本地存储可以缓存信息 ,在创建数据的时候引入创建好的数据
cookie 好像也可以

tiyunchen 2019-05-28 01:11:34

service workers 好像也可以 .
Service workers 基本上充当应用同服务器之间的代理服务器,可以用于拦截请求,也就意味着可以在离线环境下响应请求,从而提供更好的离线体验。同时,它还可以接收服务器推送和后台同步 API。
service workers

DarthVaderrr 2019-07-03 07:50:13

manifest 可以标记一些缓存资源,在离线的时候使用

poporeki 2019-07-04 14:31:17

localStorage 原理并不清楚啊,只知道怎么用
localStorage 中的键值对总是以字符串的形式存储。可以长期被保存

//增加
localStorage.setItem('myCat', 'Tom');
//获取
let cat = localStorage.getItem('myCat');
//删除所有
localStorage.clear();
seho-dev 2019-07-14 03:43:02

除了我们的storge,记得在毕业的时候,遇到了一个刁难的面试官问我,如何用h5的新特性操作一个100mb的存储和读写;

localstorge仅仅可以存储3-4mb的大小,在特殊的场景下可以更多,cookie就更少了;只有几kb;
用h5操作数据库也可以,但是面试官说不能操作数据库;

所以面试官的答案是:h5可以对本地的文件有777权限,可以任意读写;所以用h5存一个100m的东西到本地,然后再读出来;

这个不知道是胡说的还是什么,但是感觉很牵强,所以也算是一个答案吧

Konata9 2019-07-21 15:16:12

HTML5 的离线存储
HTML5 存储方式
HTML5 离线存储原理

离线存储是在 HTML 5 中创建 cache manifest 文件来实现 Web 应用的离线版本的。

离线存储有这么几个好处:没有网络时可以浏览加快资源的加载速度减少服务器负载

离线存储的相关配置在 .appcache 文件中。
通过配置 CACHE MANIFEST, NETWORK, FALLBACK 来控制需要被缓存的文件。
JavaScript 也暴露了 applicationCache API 让我们手动进行缓存的刷新。

smallWhitevv 2019-07-24 07:59:29
gu-xionghong 2019-07-25 08:20:37
wsb260 2019-07-30 08:18:07

优点:

没有网络时可以浏览,加快资源的加载速度,减少服务器负载

使用:

只需要在页面头部加入,然后创建manifest.appcache文件

manifest.appcache文件配置:

1)CACHE MANIFEST放在第一行
2)CACHE:表示需要离线存储的资源列表,由于包含manifest文件的页面将被自动离线存储,所以不需要列出来
3)NETWORK:表示在线才能访问的资源列表,如果CACHE列表里也存在,则CACHE优先级更高
4)FALLBACK:表示如果访问第一个资源是吧,那么使用第二个资源来替换它

浏览器如何解析manifest

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

与传统浏览器的区别

1)离线缓存是针对整个应用,浏览器缓存是单个文件
2)离线缓存可以主动通知浏览器更新资源

状态 window.applicationCache对象的status属性

0:无缓存
1:闲置
2.检查中,正在下载描述文件并检查更新
3:下载中
4:更新完成
5:废弃,应用缓存的描述文件已经不存在了,因此页面无法再访问应用缓存

事件 window.applicationCache对象的相关事件

1)oncached:当离线资源存储完成之后就触发这个事件
2)onchecking:当浏览器对离线存储资源进行更新检查的时候触发
3)ondounloading:当浏览器开始下载离线资源的时候会触发
4)onprogress:当浏览器在下载每一个资源的时候会触发
5)onupdateready:当浏览器对离线资源更新完成之后触发
6)onnoupdate:当浏览器检查更新之后发现没有这个资源时触发

注意事项

站点离线存储的容量限制是5M
如果manifest文件,或者内部列举的某一个文件不能正常下载,整个更新过程将视为失败,浏览器继续全部使用老的缓存
引用manifest的html必须与manifest文件同源,在同一个域下
在manifest中使用的相对路径,相对参照物为manifest文件
CACHE MANIFEST字符串硬在第一行,且必不可少
系统会自动缓存引用清单文件的HTML文件
manifest文件中CACHE则与NETWORK,FALLBACK的位置顺序没有关系,如果是隐式声明需要在最前面
FALLBACK中的资源必须和manifest文件同源
当一个资源被缓存后,该浏览器直接请求这个绝对路径也会访问缓存中的资源。
站点中的其他页面即使没有设置manifest属性,请求的资源如果在缓存中也从缓存中访问
当manifest文件发生改变时,资源请求本身也会触发更新

FurryWolfX 2019-11-28 02:26:44

除了我们的storge,记得在毕业的时候,遇到了一个刁难的面试官问我,如何用h5的新特性操作一个100mb的存储和读写;

localstorge仅仅可以存储3-4mb的大小,在特殊的场景下可以更多,cookie就更少了;只有几kb;
用h5操作数据库也可以,但是面试官说不能操作数据库;

所以面试官的答案是:h5可以对本地的文件有777权限,可以任意读写;所以用h5存一个100m的东西到本地,然后再读出来;

这个不知道是胡说的还是什么,但是感觉很牵强,所以也算是一个答案吧

浏览器不可能对本地文件有777权限的,不然就乱套了,打开个网页操作磁盘文件,完全无安全性可言。操作大量离线数据可以用浏览器内置的DB,如IndexedDB。

Comments per page
< Page 1 / 4 >

学习不打烊,充电加油只为遇到更好的自己,365天无节假日,每天早上5点纯手工发布前端知识点(死磕自己,愉悦大家)。希望大家在这浮夸的前端圈里,保持冷静,坚持每天花20分钟来学习与思考。在这千变万化,类库层出不穷的前端,建议大家不要等到找工作时,才狂刷题,提倡每日学习!欢迎大家关注3+1开源项目!希望大家每人去学习与思考!(不要为了谁而来,要为自己而努力!

【关注官方公众号】 每天4:30-5:00推送
【公众号推荐】 一起折腾前端算法
【微信学习群】 备注3+1