我正在尝试缓存(供离线使用)我的网络应用程序的某些部分,但是每当我缓存 css 文件或 js 文件时,它们在从缓存加载时会变成空的(在 Safari 和 Firefox 中均已选中)
什么会导致这个问题?我已确保 list 文件正常工作,并且我已尝试使用相对路径和绝对路径(包括页面域)。
如果我排除所有脚本和 css 文件,它们加载得很好,但一旦我将它们放入离线缓存中,它们就会作为空文件加载。
其他离线应用程序在我测试过的平台上运行良好,所以一定是我的设置有问题。如果这对事情有任何影响,这些页面将由运行在 linux 上的 apache 服务器提供服务。
css文件请求头:
Date Tue, 12 Jan 2010 11:06:41 GMT
Server Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.4 with Suhosin-Patch
Last-Modified Thu, 15 Oct 2009 11:53:16 GMT
Etag "36625c-1da0-475f7ecbca300"
Accept-Ranges bytes
Content-Length 7584
Content-Type text/css
这当然没有启用离线缓存。
最佳答案
发布 CSS 文件的响应 header 。最可能的原因是文件即将过期。
似乎有一个 Etag 但没有 Expires 或缓存控制 header 有点奇怪。它可能会混淆离线缓存。尝试在您的服务器配置中明确设置文档过期规则,Apache 的 ExpiresDefault。
Etag 的规则规定,如果 Etag 与后续请求匹配,服务器(在这种情况下是您的离线缓存)应该发送 304(使用您已有的)和 NO DATA。但是,如果文档不在浏览器的 NORMAL 缓存中并且您处于离线状态,则无法从中检索原始文档。
关于caching - HTML5 list 缓存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2048297/