Html5 应用程序缓存:刷新页面时无法从应用程序缓存加载 JavaScript 文件

Html5 application cache: Unable to load JavaScript file from application cache when refresh page

我在 Android Chrome 浏览器和桌面 Chrome 浏览器上做了一些 Html5 应用程序缓存测试。

清单url
/appcachetest/Main/AppManifest:

CACHE MANIFEST

# Version: 3

NETWORK:
*

CACHE:
Main
Main/Page1
Main/Page2
Scripts/jquery-1.10.2.js
#FALLBACK:
@{
   Layout = null;
   Response.ContentType = "text/cache-manifest";
   Response.Cache.SetCacheability(HttpCacheability.NoCache);
   Response.Cache.SetExpires(DateTime.MinValue);
  Response.ContentEncoding = System.Text.Encoding.UTF8;
 }

主索引页面:

<!DOCTYPE html>
<html manifest="/appcachetest/Main/AppManifest" type="text/cache-manifest">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title> - My ASP.NET Application</title>
    <script src="/AppCacheTest/Scripts/jquery-1.10.2.js"></script>
</head>
<body>


<iframe src="Main/Page1" style="border: 0; width: 100%; height: 100%">   </iframe>

</body>
</html>

我尝试了如下所示的步骤:

  1. 使浏览器在线。
  2. 在地址栏输入主索引页Url,然后回车
  3. 页面已正确加载,所有项目都已缓存。
  4. 关闭浏览器并重新启动。
  5. 使浏览器离线并启用缓存。
  6. 在地址栏中键入主索引页,然后按回车键。
  7. 主索引页和 JavaScript 从缓存中加载的文件。
  8. 单击浏览器刷新按钮,然后JavaScript无法从缓存中加载文件。

是否有任何有效的解决方案可以在刷新页面时从应用程序缓存中加载 JavaScript 文件?如何让它发挥作用?

谢谢, 博

经过几个小时的调查和测试。

我发现如果我将文件 jquery-1.10.2.js 重命名为 jquery.js.jgz,那么离线刷新页面不会导致任何错误。

我终于知道导致无法从 Manifest Cache 加载 JavaScript 文件的问题了。

Manifest文件中的缓存URL区分大小写,我花了两天时间才知道这一点。