缓存使我的网站脱机无效

时间:2013-11-22 15:12:05

标签: javascript jquery html5 google-chrome caching

以下是我的缓存文件:

CACHE MANIFEST
# 2013-11-22 14:38:54735779

CACHE:

../../../../assets/img/background_01.jpg
../../../../assets/img/background_02.jpg
../../../../assets/img/background_03.jpg
../../../../assets/img/datepicker_icon.png
../../../../assets/js/jquery-1.10.2.min.js
../../../../assets/js/jquery-ui-1.10.0.custom.min.js
../../../../assets/js/bootstrap.min.js
../../../../offline/offline.js
../../../../offline/offline_external.js

NETWORK:
*

在谷歌浏览器中(当互联网处于活动状态时),我能够看到所有上述指定的文件都被缓存。 Google Chrome可以显示缓存的项目。但是,当我尝试关闭互联网并刷新页面时,Chrome会报告以下错误:

  

应用程序缓存错误事件:清单提取失败(-1)未捕获   ReferenceError:未定义jQuery   (匿名函数)GET   http://mywebsite.com/app/assets/js/jquery-1.10.2.min.js

Jquery的路径是正确的,因为我能够点击链接并将其导航到服务器中的正确位置,所以我无法解决问题。

有人可以告诉我哪里出错了吗?

我在本地服务器上尝试了相同的设置,它可以正常工作。

我的.htaccess设置如下:

AddType text/cache-manifest manifest
AddType application/octet-stream csv
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^([^\.]+)\.myswebsite\.com$ [NC]

请注意我已经尝试了

  

AddType text / cache-manifest manifest

  

AddType text / cache-manifest .manifest

它没有解决问题。当我在互联网关闭时刷新页面时,离线仍然无效。

2 个答案:

答案 0 :(得分:1)

您应该使所有资产以/相对于基础域开头,您的文件应如下所示:

CACHE MANIFEST
# 2013-11-22 14:38:54735779

CACHE:

/assets/img/background_01.jpg
/assets/img/background_02.jpg
/assets/img/background_03.jpg
/assets/img/datepicker_icon.png
/assets/js/jquery-1.10.2.min.js
/assets/js/jquery-ui-1.10.0.custom.min.js
/assets/js/bootstrap.min.js
/offline/offline.js
/offline/offline_external.js

NETWORK:
*

答案 1 :(得分:0)

不确定您是否找到了解决此问题的方法,但我遇到了同样的问题。事实证明我在加载之前尝试访问javascript资源。

我通过确保访问javascript资源低于对页面上javascript文件的引用而解决了这个问题,并且我还将其包装在" $(document).ready(function(){})中"调用

$(document).ready(function () {
  // access the resource here..
})

这似乎为我解决了问题。我不太清楚为什么页面会更加宽容"在线模式。