Webkit的OfflineApplicationCache通配符支持的陷阱

最近在写Web Offline Application的网页。据MDN的说法,manifest文件的NETWORK部分是可以使用通配符的。我希望页面的Ajax请求都是连网发送的,所以写了一个这样的manifest文件

CACHE MANIFEST
CACHE:
css/common.css
css/index.css
js/jquery-min.js
js/index.js

NETWORK:
*.php

#2013-04-15T19:38:24+08:00

实际使用的时候,Mozilla Firefox下工作良好,但Google Chrome下Ajax请求全都会出错。后来找了很多资料,才发现Webkit对NETWORK部分的处理根本就没做通配符处理。当一个请求发起时,Webkit的浏览器会先看看NETWORK部分有没有完全相同的,如果有就直接连网发送;如果没有则会看NETWROK部分有没有单独的*,没有就直接返回加载错误。最后只好把manifest改成

CACHE MANIFEST
CACHE:
css/common.css
css/index.css
js/jquery-min.js
js/index.js

NETWORK:
*

#2013-04-15T21:14:51+08:00

这样一来所有manifest中不存在的资源都会联网加载。

Continue Reading