HTML5应用程序缓存(Application Cache)简介
说到“春运”,大家都会联想到拥挤的火车站的画面,究其原因,是突发的客流量冲垮了有限的客运资源。乘客和座位之间是“一个萝卜一个坑”的关系,乘客多、座位少,自然有人买不到票。
其实,类比互联网上的网页,道理是一样的。用户用浏览器打开一个网页的 URL,相当于发生了若干次下载,如果服务器顶不住,导致一些访问失败,会带来很糟糕的用户体验。
遇到这种情况,开发者或许会考虑对服务器“扩容”。扩容说起来简单,操作起来需要很多资金开销,但通过使用 Application Cache 技术可以达到扩容的目的,代价只是多加几句代码。
Application Cache 是 HTML5 中定义的一种离线存储技术标准。这种技术可以让开发者明确地指定页面中哪些静态资源可以在第一次访问网页的同时缓存到本地,并且在下次访问该网页时向服务器询问本地缓存的资源是否需要更新。
当浏览器打开使用了 Application Cache 技术的网页时,会尝试先从 Cache 中加载数据,并同时向服务器询问本地资源是否已经过期,如果本地资源过期,浏览器会自动从服务器上更新资源到 Cache 中。
需要说明的是,如果 Cache 中的数据可用,浏览器就会对其进行加载,即使它们已经过期。页面可以通过注册监听器的方式获得 Cache 更新成功的事件,主动刷新一下页面,将最新的内容及时展示给用户。
Application Cache 技术通过缓存资源到本地,避免了每次打开网页都会从服务器拉取大量数据的过程,取而代之的只是一个轻量级的更新检查请求,这样,开发者的服务器带宽就被大大地释放出来。
另外,由于网页的资源都是通过本地资源读取的,用户再次打开同一页面时,内容展示时间会大大缩短,甚至达到 Native 应用的水平, 从而进一步优化用户体验。
如果页面的所有资源都被缓存到了本地,那么页面就可以在离线的情况下被完整地加载了。
所以,如果 Application Cache 用得好,Web 应用可以获得媲美 Native 应用的启动速度和离线使用的能力,同时释放服务器的带宽。
其实,类比互联网上的网页,道理是一样的。用户用浏览器打开一个网页的 URL,相当于发生了若干次下载,如果服务器顶不住,导致一些访问失败,会带来很糟糕的用户体验。
遇到这种情况,开发者或许会考虑对服务器“扩容”。扩容说起来简单,操作起来需要很多资金开销,但通过使用 Application Cache 技术可以达到扩容的目的,代价只是多加几句代码。
Application Cache 是 HTML5 中定义的一种离线存储技术标准。这种技术可以让开发者明确地指定页面中哪些静态资源可以在第一次访问网页的同时缓存到本地,并且在下次访问该网页时向服务器询问本地缓存的资源是否需要更新。
当浏览器打开使用了 Application Cache 技术的网页时,会尝试先从 Cache 中加载数据,并同时向服务器询问本地资源是否已经过期,如果本地资源过期,浏览器会自动从服务器上更新资源到 Cache 中。
需要说明的是,如果 Cache 中的数据可用,浏览器就会对其进行加载,即使它们已经过期。页面可以通过注册监听器的方式获得 Cache 更新成功的事件,主动刷新一下页面,将最新的内容及时展示给用户。
Application Cache 技术通过缓存资源到本地,避免了每次打开网页都会从服务器拉取大量数据的过程,取而代之的只是一个轻量级的更新检查请求,这样,开发者的服务器带宽就被大大地释放出来。
另外,由于网页的资源都是通过本地资源读取的,用户再次打开同一页面时,内容展示时间会大大缩短,甚至达到 Native 应用的水平, 从而进一步优化用户体验。
如果页面的所有资源都被缓存到了本地,那么页面就可以在离线的情况下被完整地加载了。
所以,如果 Application Cache 用得好,Web 应用可以获得媲美 Native 应用的启动速度和离线使用的能力,同时释放服务器的带宽。
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频