注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

长风明志的博客

不要也不能做下一个谁,应该且可以做第一个自己

 
 
 

日志

 
 

离线应用程序缓存基础  

2012-05-19 11:49:39|  分类: PHP网络编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
HTML5中有一个特性叫做offline application cache(离线程序缓存),允许用户即使无法连接到internet时也可以运行网络程序。当用户导航到你的网络程序时,浏览器会将所有需要展示的页面(HTML、CSS、JavaScript、图片等)都下载到本地。下次当用户再访问这个网络程序时,浏览器会识别URL并且将文件从本地应用程序缓存中拿出来展示,而并非从网络直接下载数据。
离线应用程序缓存的主要组成部分是一个在Web服务器上托管的cache manifest file(缓存列表文件)。 一个manifest文件只是存放在Web服务器上的一个简单的文本文件,而且会以cache-manifest的content type(内容类型)发送到用户的设备。manifest中包含了用户设备为了实现必要功能必须下载保存的文件列表。假设一个web目录下包含了如下文件:
index.html
logo.jpg
scripts/demo.js
styles/scree.css
此时,index.html是用户在访问程序的时候浏览器需要加载的页面。其他文件是在index.html中被引用的文件。如果想让这一切都在离线状态下可用,就要在index.html的同一路径下创建一个叫做demo.manifest的文件:
CACHE MANIFEST
index.html
logo.jpg
scripts/demo.js
styles/screen.css
当然也可以用绝对路径的方式:
CACHE MANIFEST
http://www.example.com/index.html
http://www.example.com/logo.jpg
http://www.example.com/scripts/demo.js
http://www.example.com/styles/screen.css
然后需要在index.html文件中的html标签中加入manifest属性,来将创建好的文件关联起来:
<html manifest="demo.manifest">
必须给manifest文件制定text/cache-manifest内容类型,否则浏览器不会识别。如果使用Apache Web服务器或者一个兼容的Web服务器,可以在Web目录下加上含有如下代码的.htaccess文件:
AddType text/cache-manifest .manifest
添加白名单:
CACHE MANIFEST
index.html
scripts/demo.js
styles/screen.css

NETWORK:
logo.jpg
白名单中的logo.jpg被移动到NETWORK中。当用户离线是,图片就会显示成一个损坏的图片链接;当用户在线时,图片就显示正常。
Fallback(备选)选项:
如果不希望让离线用户看到损坏的图片链接,就要使用FALLBACK关键字来指定一个备选资源:
CACHE MANIFEST
index.html
scripts/demo.js
styles/screen.css

FALLBACK:
logo.jpg offline.jpg
创建动态的Manifest文件:
<?php
  header('Content-Type: text/cache-manifest');
 echo "CACHE MANIFEST\n";

$hashed="";
$dir=new RecursiveDirectoryIterator(".");
foreach(new RecursiveIteratorIterator($dir) as $file)
{
      if($file->IsFile()&&$file!="./manifest.php"&&substr($file->getFilename(),0,1)!=".")
    {
            echo $file."\n";
            $hashes.=md5_file($file);
    }
}
echo "# Hash: ".md5($hashes)."\n";           //这是注释
?>
这样做的话,哪怕在真个目录的任意一个文件中修改了一个字符,都会在manifest中插入一个新的哈希字符串。就意味着对于文件的任何改动最终都会更改manifest文件,就会触发下一次用户启动程序时的下载行为。
  评论这张
 
阅读(547)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017