// Check if a new cache is available on page load.
// window.addEventListener('load', function(){
//         // window.applicationCache.update(); // 手动更新缓存 或者 监听到加载缓存完成事件后 刷新页面
//   window.applicationCache.addEventListener("updateready", function(e){
//   console.log(window.applicationCache.status);
//   setTimeout(function(){
//     window.location.reload();
//   }, 3000);
//   });
// });

可能会有几秒延迟情况

什么是应用程序缓存(Application Cache)?

HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。

应用程序缓存为应用带来三个优势:

  • 离线浏览 - 用户可在应用离线时使用它们
  • 速度 - 已缓存资源加载得更快
  • 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。

浏览器支持

所有主流浏览器均支持应用程序缓存,除了 Internet Explorer。

HTML5 Cache Manifest 实例

下面的例子展示了带有 cache manifest 的 HTML 文档(供离线浏览):

实例

<!DOCTYPE HTML>
<html manifest="demo.appcache"><body>
The content of the document......
</body></html>

亲自试一试

Cache Manifest 基础

如需启用应用程序缓存,请在文档的 <html> 标签中包含 manifest 属性:

<!DOCTYPE HTML>
<html manifest="demo.appcache">
...
</html>

每个指定了 manifest 的页面在用户对其访问时都会被缓存。如果未指定 manifest 属性,则页面不会被缓存(除非在 manifest 文件中直接指定了该页面)。

manifest 文件的建议的文件扩展名是:".appcache"。

请注意,manifest 文件需要配置正确的 MIME-type,即 "text/cache-manifest"。必须在 web 服务器上进行配置。

Manifest 文件

manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。

manifest 文件可分为三个部分:

  • CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存
  • NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存
  • FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)

CACHE MANIFEST

第一行,CACHE MANIFEST,是必需的:

CACHE MANIFEST
/theme.css
/logo.gif
/main.js

上面的 manifest 文件列出了三个资源:一个 CSS 文件,一个 GIF 图像,以及一个 JavaScript 文件。当 manifest 文件加载后,浏览器会从网站的根目录下载这三个文件。然后,无论用户何时与因特网断开连接,这些资源依然是可用的。

NETWORK

下面的 NETWORK 小节规定文件 "login.asp" 永远不会被缓存,且离线时是不可用的:

NETWORK:
login.asp

可以使用星号来指示所有其他资源/文件都需要因特网连接:

NETWORK:
*

FALLBACK

下面的 FALLBACK 小节规定如果无法建立因特网连接,则用 "offline.html" 替代 /html5/ 目录中的所有文件:

FALLBACK:
/html5/ /404.html

注释:第一个 URI 是资源,第二个是替补。

更新缓存

一旦应用被缓存,它就会保持缓存直到发生下列情况:

  • 用户清空浏览器缓存
  • manifest 文件被修改(参阅下面的提示)
  • 由程序来更新应用缓存

实例 - 完整的 Manifest 文件

CACHE MANIFEST
# 2012-02-21 v1.0.0
/theme.css
/logo.gif
/main.jsNETWORK:
login.aspFALLBACK:
/html5/ /404.html

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

关于应用程序缓存的注释

请留心缓存的内容。

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

注释:浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点 5MB)。

manifest.appcache强制刷新相关推荐

  1. 火狐强制刷新_强制Firefox 3在Windows XP中使用Vista默认主题

    火狐强制刷新 This article was written by Leon Steadman, the same helpful reader that showed us how to Use ...

  2. Angular的ChangeDetectorRef.detectChanges()实现angularJS的$apply()方法,强制刷新数据渲染

    在Javascript代码里,都是按照一定顺序来执行的,当轮到一个代码片段执行的时候,浏览器就只会去执行当前的片段,不会做任何其他的事情.所以有时候一些做得不是很好的网页,当点击了某个东西之后会卡住, ...

  3. 怎么让用一行代码实现页面的定时强制刷新?脚本刷流量再也不用愁了!

    网页的定时强制刷新脚本 要实现网页的强制刷新有很多种方式,这里我们引用一种较为常见同时也很简洁的方法,即利用JQuery框架实现. 核心代码为: < iframe src="url&q ...

  4. [vue] vue怎么实现强制刷新组件?

    [vue] vue怎么实现强制刷新组件? 强制重新渲染this.$forceUpdate()强制重新刷新某组件//模版上绑定key <SomeComponent :key="theKe ...

  5. php 强制刷新,web端实现后退强制刷新功能代码

    本文主要和大家介绍了微信web端后退强制刷新功能的实现代码,需要的朋友可以参考下,希望能帮助到大家. 具体代码如下所示: //生成uuid var uuidChars = "01234567 ...

  6. 《解决微信内置浏览器返回上一页强制刷新问题方法》

    <解决微信内置浏览器返回上一页强制刷新问题方法> 参考文章: (1)<解决微信内置浏览器返回上一页强制刷新问题方法> (2)https://www.cnblogs.com/li ...

  7. vue2强制刷新,解决页面不会重新渲染的问题

    vue2强制刷新,解决页面不会重新渲染的问题 参考文章: (1)vue2强制刷新,解决页面不会重新渲染的问题 (2)https://www.cnblogs.com/zhusf/p/10709503.h ...

  8. Vue 强制刷新组件

    使用 vue 进行开发时,如果要刷新当前路由,则调用 router.go(0)方法即可.但是某些情况下,我们可能要求仅仅刷新某个组件,而不是路由... 遇到的问题 由于渲染数据较多,导致页面中部分数据 ...

  9. nginx强制刷新用户缓存_HTTP 缓存

    HTTP 缓存分为强缓存和协商缓存. HTTP 缓存控制机制 HTML Meta 标记 // 当前页面不缓存, 每次访问都去服务器拉取. 只有部分浏览器支持. HTTP 头信息 HTTP 头信息 强缓 ...

最新文章

  1. tomcat怎么平滑更新项目_SpringBoot内置tomcat启动原理
  2. Sliverlight之 画刷
  3. eclipse里没有project facets
  4. 【机器学习基础】如何在Python中处理不平衡数据
  5. 在windows 2003系统安装oracle11G出现的问题
  6. 计算机不能启动 无法验证数字签名,win10改win7系统启动后提示:无法验证此文件的数字签名怎么办?...
  7. 网络爬虫之httpclient的使用
  8. 【Java Netty】Java NIO position limit capacity 以及 BufferUnderflowException
  9. 数据结构专题(一):1.2.求元素个数,取元素与定位
  10. python程序设计和c语言_C 语言和 Python,该从哪个入门编程?
  11. 《OpenGL编程指南》第8版 第9版 VS2015 VS2017配置方法
  12. 模糊C均值聚类算法---图像分割(python)
  13. 物联网平台如何创造价值,构建平台需要考虑哪些因素?
  14. php用date语句获取时间,PHP date函数获取时间几个例子
  15. UITextView内边距设置
  16. 暴雪这次可真不要脸。。。
  17. Linux中升级GLIBC,终结版,测试通过
  18. 关于java变量命名,介绍阿里JAVA命名规范及IDEA实时检测插件的使用以及CODELF取名神器
  19. 【鲲鹏HCIA考试】随堂习题卷五
  20. Redis删除指定前缀的key

热门文章

  1. [Android] 文字翻转动画的实现
  2. 【Word】【WPS】跨行显示表格标题/表头
  3. 1405 mysql 2800_【未解决】MySql安装出现ERROR 1405(28000)
  4. python实现登录购物_python+selenium实现经京东登录+购物+支付
  5. 7. css重要概念
  6. 理解进程、线程以及上下文切换
  7. js实现5秒后跳转页面
  8. Python:orator-orm操作实践
  9. 服务器指定gpu命令,用于亚马逊网络服务深度学习的10个命令行技巧
  10. 游泳可以戴的耳机有哪些、推荐几款真正能戴着游泳的蓝牙耳机