记离线缓存(manifest)一大坑,断定其只适用于静态网站或离线应用

今天看了离线缓存(manifest)方面的资料,兴冲冲地就想给自己的网站用上。待我把代码都写好部署上服务器,并测试过OK的时候,在SegmentFault刷了一把manifest方面的问答,才发现这个大坑:manifest除了缓存manifest.appcache文件所指定的资源外,还必定会缓存当前的html页面

具体来说:

  1. 当用户第一次访问页面,会从服务器上拉取html页面,以及其它静态资源。

  2. 浏览器会把html页面,连同manifest.appcache文件,连同manifest.appcache文件里所指定的静态资源一并存入Application Cache

  3. 当用户第二次访问该页面,manifest.appcache文件里所指定的静态资源就不需要重新加载了,直接从cache读出。这很好,问题是,当前的html页面也从cache直接读出来了,根本就不管线上的版本呀!

  4. 这造成的问题是,网站如果更新了,用户的浏览器根本不知道,还显示cache里的版本。

网上有所谓的利用