-
-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[html] 第4天 HTML5的文件离线储存怎么使用,工作原理是什么? #10
Comments
localstorge 利用浏览器的本地存储可以缓存信息 ,在创建数据的时候引入创建好的数据 |
service workers 好像也可以 . |
manifest 可以标记一些缓存资源,在离线的时候使用 |
localStorage 原理并不清楚啊,只知道怎么用 //增加
localStorage.setItem('myCat', 'Tom');
//获取
let cat = localStorage.getItem('myCat');
//删除所有
localStorage.clear(); |
除了我们的storge,记得在毕业的时候,遇到了一个刁难的面试官问我,如何用h5的新特性操作一个100mb的存储和读写; localstorge仅仅可以存储3-4mb的大小,在特殊的场景下可以更多,cookie就更少了;只有几kb; 所以面试官的答案是:h5可以对本地的文件有777权限,可以任意读写;所以用h5存一个100m的东西到本地,然后再读出来; 这个不知道是胡说的还是什么,但是感觉很牵强,所以也算是一个答案吧 |
HTML5 的离线存储 离线存储是在 HTML 5 中创建 离线存储有这么几个好处:没有网络时可以浏览、加快资源的加载速度、减少服务器负载 离线存储的相关配置在 |
安利个链接 ,讲的很细 。https://segmentfault.com/a/1190000000732617 |
优点:没有网络时可以浏览,加快资源的加载速度,减少服务器负载 使用:只需要在页面头部加入,然后创建manifest.appcache文件 manifest.appcache文件配置:1)CACHE MANIFEST放在第一行 浏览器如何解析manifest1.在线情况:浏览器发现html头部有manifest属性,他会请求manifest文件,如果是第一次访问,那么浏览器会根据manifest文件的内容下载相应的资源并且进行离线存储.如果已经访问过并存储,那么浏览器使用 离线的资源价值,然后对比新的文件,如果没有发生改变就不做任何操作,如果文件改变了,那么就会重新下载文件中的资源并进行离线存储 与传统浏览器的区别1)离线缓存是针对整个应用,浏览器缓存是单个文件 状态 window.applicationCache对象的status属性0:无缓存 事件 window.applicationCache对象的相关事件1)oncached:当离线资源存储完成之后就触发这个事件 注意事项站点离线存储的容量限制是5M |
浏览器不可能对本地文件有777权限的,不然就乱套了,打开个网页操作磁盘文件,完全无安全性可言。操作大量离线数据可以用浏览器内置的DB,如IndexedDB。 |
这个回答就像是我在第53天提问的另外一个问题:#210 |
哈哈确实算假面试官了,H5能读文件,但不能写。如果需要读写文件,需要配合Native插件,如IE的ActiveX。但这个不属于H5。现在的浏览器也基本不支持这种用法了(安全隐患过于严重)。 |
manifest xx.manifest CACHE MANIFEST CACHE: //需要缓存的文件 NETWORK: //不需要缓存的文件 FALLBACK: //缓存失败后使用的文件 |
sessionStorage 推荐一个本地异步存储的js库 |
原理: 怎么用: <!DOCTYPE HTML>
<html manifest = "cache.manifest">
...
</html> 然后书写cache.manifest文件: CACHE MANIFEST
#v0.11
CACHE:
js/app.js
css/style.css
NETWORK:
resourse/logo.png
FALLBACK:
/ /offline.html manifest (即 .appcache 文件)文件是简单的文本文件,可分为三个部分: 浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢? |
弊端就是 用户终要进行有网络的交互行为 直接展示404页面找不到 或者提示没有网络亦可 |
看了上面的回答,都是不正确的还点赞那么多对新人是误导。客户端离线缓存使用manifest.appcache这种方式早就被废弃了,详情参考Using_the_application_cache,替代的方式是使用Using_Service_Workers。 Service Work 现在已经完全普及,主流的Web框架都会集成该功能并做到开箱即用,例如 create-react-app 都已经集成到脚手架中,开发者不需要单独配置就可以使用离线文件缓存。 Service Work 工作原理是在客户端请求网站的时候,先注册Service Work,然后利用其拦截并缓存页面所需要的资源,当离线的时候,请求的资源会优先从Service Work 缓存的资源中返回。 |
现在都是Service Work的方式来做离线缓存了 |
HTML5 的离线存储 离线存储是在 HTML 5 中创建 cache manifest 文件来实现 Web 应用的离线版本的。 离线存储有这么几个好处:没有网络时可以浏览、加快资源的加载速度、减少服务器负载 离线存储的相关配置在 .appcache 文件中。 |
manifest |
Service worker使用原理应用程序缓存(Application Cache)使用引用清单文件要启用某个应用的应用缓存,请在文档的 <html manifest="example.appcache">
...
</html> 每个指定了 manifest 的页面在用户对其访问时都会被缓存。如果未指定 manifest 属性,则页面不会被缓存(除非在 manifest 文件中直接指定了该页面) manifest 文件的建议的文件扩展名是:".appcache" 注意:manifest 文件需要配置正确的 MIME-type,即 "text/cache-manifest",必须在 web 服务器上进行配置 清单文件结构manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。 manifest 文件可分为三个部分:
简单的清单格式如下:
原理基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示 |
答:Web App中一部分资源并不是经常改变,并不需要每次都向服务器发出请求,出于这些原因,HTML5提出的一个新的特性:离线存储。通过离线存储,我们可以通过把需要离线存储在本地的文件列在一个manifest配置文件中,这样即使在离线的情况下,用户也可以正常使用App。 |
给个链接地址:但是这个方案已经失效了,很多坑,很鸡肋 |
优点: 使用: manifest.appcache文件配置: 浏览器如何解析manifest 与传统浏览器的区别 状态 window.applicationCache对象的status属性 事件 window.applicationCache对象的相关事件 注意事项 |
使用方法:创建一个和html同名的manifest文件,然后在页面头部加入manifest属性:manifest="index.manifest",然后cache。manifest文件中编写需要离线存储的资源,在离线状态下,操作window.applicatiobCahe进行离线缓存的操作 |
|
只需要在页面头部加入,然后创建manifest.appcache文件 |
localStorage,存储在浏览器上,及时浏览器关闭也不会消失,getItem、setItem获取数据和存储数据 |
Local Storage: Web Storage API 允许以键值对的形式存储数据,数据存储在用户的浏览器中。 |
第4天 HTML5的文件离线储存怎么使用,工作原理是什么?
The text was updated successfully, but these errors were encountered: