HTTP Cache
在HTTP1.1中caching的作用一是在很多情况下消除向服务器发送请求,二是一些情况下消除发送完整response的需要。 前者减少了许多操作网络来回通信的数量,使用“过期”的机制来达到此目的;后者减少了网络带宽的需求,我们使用“确认”机制来达到此目的。
庆幸的是所有浏览器都有HTTP Cache的实现。 开发者只要保证每个服务器端的响应提供了正确的HTTP header指令去知道浏览器 响应可以被浏览器何时cache,cache多久。
**每个response的header的信息:**
Http 响应码:
Content-Length: 1024 表示这个response有1024字节的大小
Cache-Control: max-age=120 表示client可以cache这个response最长120秒
Etag: "x234dff" 这个确认记号可以在response过期之后来check这个资源是否被修改了。
举一个具体的例子,假设初始获取的response已经过了120秒,浏览器会发起一个对同样资源的新的请求。 首先,浏览器检查本地的cache并找到了之前的response,不幸的是它已经过期了。 这个时候可以简单地重新发起一个请求获得一个新的response,但这是没有效率的,因为如果response的内容没有改变那么我们就没有理由重新下载一个一样的文件。这是Validation token(即header中的Etag)所解决的问题:服务器生成并返回一个由文件内容独有的特征生成的一个记号。Client不需要知道这个记号是怎么生成的,只需要在下一次请求中把这个token发到服务器端。 如果记号一致,那么就是资源没有change,不需要重新下载。
那么作为一个web开发者所要做的就是确保服务器端提供了必要的Rtag tokens; 检查服务器文档和必要的配置项。
Cache-Control: 该指令控制谁可以cache响应,在什么情况下cache,cache多久。
最好的请求是不需要和服务器通信的:一个本地的复印件允许我们消除所有的网络延迟并避免了数据传输过程中的数据丢失风险。
“no-cache”: 指返回的response不能在没有首先检查服务器的response是否改变的情况用来满足后继的对同一url的请求
“no-store”: 指不允许浏览器或其他的中间cache用来存储任何版本的response,即每次请求都必须下载。
“public”: 指该response可以被cache,即使它有HTTP认证。 通常该指令是不需要的,因为现实的cache信息通常有“max-age”
“private”: 指responses只能被一个单独的用户cache,不能被任何其他中间cache缓存,比如不能被CDN缓存。
“max-age”
具体的cache policy参见该文章。
Ref: https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=en Http caching byiLya Grigorik
HTML5 APPCache
Here we go. H5的AppCache的动机是为web应用提供离线体验,具体上有三个优势:
- 离线浏览,用户可以离线在你整个站点内跳转(navigate);
- 速度,资源可以从硬盘上读取而不用联网;
- 可条件性(Resilience), 如果你的维护时挂掉了,你哟农户可以获得离线体验。
使用Appcache需要定义一个cache mannifest文件,来指定浏览器哪些资源可以被缓存。
启用application cache需啊哟在每个想要缓存的页面的html标签上加上一个manifest属性,like this:
这意味着任何用户跳转到的页面包含manifest属性的都建隐式地被加入application cache。像这样的”/page-url/”, “/page-url/?something”, “/page-url/?something-else”会被当成单独的页面,所以AppCache更好地用在单独的url上,实际上这也成为了它一个缺陷。
But, Application Cache is a douchebag. 参见http://alistapart.com/article/application-cache-is-a-douchebag 这篇文章。
Service Worker Cache
Service worker是一种独立于broswer js线程的proxy server,可以拦截站点的请求并做一些处理,同时提供了单独管理的cache用来缓存response。SW设计的初衷也是为了解决web应用的离线体验的问题,解决H5 Appcache的弊端。
三者的区别和联系:
SW的cache完全独立于HTTP Cache,完全由开发者自己手动管理和更新;
区别于H5 AppCache,SW是可以作用于整个site的, 即是可以跨页面的;且也为了避免上文提到的AppCache的一系列弊端;
http://blog.csdn.net/u010875425/article/details/50037963
相关推荐
离线应用缓存(Application Cache),也称为AppCache,是Web应用程序的一种离线存储机制。它允许开发者通过一个名为`manifest`的特殊文件来指定一系列静态资源,浏览器会根据这个清单文件自动下载并缓存这些资源,...
开发者或使用者需要解压文件,然后根据项目结构和说明来运行和编辑这个H5应用。 总的来说,"H5的爱心和相册"项目结合了HTML5、CSS3和JavaScript等技术,创造出一个富有情感和互动性的在线相册平台,不仅展示了H5...
在Android开发中,APPCache是应用缓存的一种方式,它主要用于存储临时数据,提升应用程序的性能和用户体验。当用户再次访问相同数据时,可以从缓存中快速读取,避免了网络延迟或I/O操作,降低了服务器压力。本篇文章...
AppCache Android app DiskLruCache缓存封装 1.5.0的版本是有史以来最大的更新,一个字,就是简单易用!!! 介绍 Android 应用缓存很常见,大多数应用都在使用DiskLruCache缓存技术,也有很多人介绍过DiskLruCache...
本压缩包文件“h5和js等思维导图.rar”提供了关于这些技术的思维导图,帮助学习者系统地理解和掌握相关知识。 首先,HTML5作为最新的超文本标记语言版本,主要改进了对多媒体的支持,增强了离线存储功能,简化了...
总的来说,“h5新技术(含课件和代码)”这个资源包提供了一个全面的学习路径,无论你是初入Web开发的小白,还是寻求技术进阶的开发者,都能从中受益匪浅。通过深入学习和实践,你可以更好地掌握HTML5技术,提升自己的...
2. **离线存储**:通过`AppCache`和`Service Worker`,H5源码可以实现离线访问,即使在网络不稳定的情况下,表白页面也能正常展示。 3. **Canvas与SVG**:这两个图形绘制技术可以让开发者创建动态、交互式的视觉...
其次,H5的离线存储特性(如AppCache和Service Worker)使得即使在网络不稳定的情况下,用户也能访问到内容,这对于一个宣传性质的H5页面来说,可以提供更好的用户体验。考虑到年会可能会吸引大量用户同时访问,这种...
Android与H5的互调使得原生应用可以利用Web技术的优势,如跨平台性、快速迭代和丰富的用户界面,同时也让Web应用能够访问设备的硬件资源,提供更接近原生应用的体验。以下我们将详细探讨这一主题。 1. **WebView...
2. 提供中间件和标签来控制哪些页面应使用AppCache,并在需要时更新缓存。 3. 支持缓存版本控制,确保更新时能正确刷新用户浏览器的缓存。 4. 提供错误处理机制,以应对AppCache更新失败或网络问题。 使用`django-...
2. **离线存储**:HTML5的离线存储(Offline Storage)功能,如AppCache和Service Worker,允许部分数据在用户首次访问时缓存,即使在网络不稳定或无网络的情况下,也能快速加载页面,提高用户体验。在格子酒店应用...
在现代Web开发中,H5(HTML5)已经成为构建交互式和动态网页的标准。加载特效,尤其是“炫酷”的加载特效,是提升用户体验的关键部分,它们可以吸引用户注意力,同时在内容加载期间提供视觉反馈。"H5非常炫酷的加载...
标题中的“AppCache”指的是Application Cache,它是HTML5标准中的一部分,主要用于离线存储Web应用的资源,使得用户在没有网络连接的情况下也能访问这些应用。Android应用程序磁盘缓存则是Android系统为了提高应用...
6. **Web Workers和Web Storage**:这两个特性分别用于后台处理和本地数据存储,提高了网页应用的性能和用户体验。 7. **表单控件**:HTML5对表单控件进行了增强,添加了新的输入类型(如date、email、url等)和...
这个课件旨在帮助学习者掌握现代网页开发的核心技术和最佳实践,尤其针对那些希望通过深入学习H5和AngularJS提升自己在前端领域技能的人群。 HTML5是Web开发的最新标准,它带来了许多改进和新特性,旨在提高网页的...
!!!!!服务器需要添加配置!!!!!!!!! 建议使用Google Chrome 测试 我的是Apache服务器 conf/httpd.conf 文件的mime_module 中添加 . . . AddType text/cache-manifest .appcache </IfModule>
7. **离线存储(AppCache)**:虽然Service Worker现在更为推荐,但早期的HTML5应用可能会使用Application Cache(AppCache)来实现离线访问,让用户在没有网络连接的情况下也能查看日历。 8. **表单输入类型**:...
HTML5是一种先进的Web技术,它在过去的十年里极大地改变了...开发者可以通过学习和利用这个项目,不仅可以快速开发出具有现代感和桌面级体验的Web应用,同时也能深入理解Web技术的最新进展,提升自身的前端开发技能。
在实际应用中,开发者应结合JavaScript(例如,通过Web Workers和Web Storage实现后台处理和数据管理)、CSS3以及其他前端框架(如Bootstrap、Vue.js等),创建交互性强、视觉效果出众的企业级网站。 文件列表中的...
3. **离线存储**:通过Application Cache(AppCache)功能,HTML5允许网页在用户离线时也能访问部分数据,提高了应用的可用性。 4. **Canvas画布**:元素提供了在网页上进行动态图形绘制的能力,为游戏开发和数据...