我在Android Chrome浏览器和桌面Chrome浏览器上做了一些Html5应用缓存测试。
manifest url
/appcachetest/主/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>
我尝试了如下步骤:
- 使浏览器在线。
- 在地址栏输入主索引页Url,并按回车
- 页面被正确加载,所有条目被缓存。
- 使浏览器离线并启用缓存。
- 在地址栏输入主索引页并按回车键。
- 从缓存中加载的主索引页和JavaScript文件。
点击浏览器刷新按钮,JavaScript文件无法从缓存加载。
是否有任何工作的解决方案,从应用程序缓存加载JavaScript文件时刷新页面?如何让它发挥作用?
谢谢,Bo
经过几个小时的调查和测试。
我发现如果我重命名文件jquery-1.10.2.js为jquery.js。
我终于知道了导致无法从Manifest缓存加载JavaScript文件的问题。
在Manifest文件中缓存的URL是区分大小写的,直到花了两天的时间我才意识到这一点。