ipad - ASP.NET list 文件脚本未刷新

标签 ipad asp.net-mvc-3 manifest offline

我正在使用 MVC 和 JS 来创建一个 iPad 应用程序。关键要求之一是应用程序可以在离线模式下工作。因此,我使用 list 文件来确定缓存的脚本文件。但是,我希望在浏览器再次联机时刷新所有脚本。我已通过以下方式指定:

Network:
*

在我的脚本下面的 list 文件中。但是这不起作用,因为在线刷新浏览器时某些文件未更新。此外,如果我检查 chrome 中的开发人员工具,控制台会显示以下事件:

Application Cache Checking event
Application Cache NoUpdate event

我猜这意味着浏览器试图更新缓存但没有找到更新。

有什么想法吗?

请参阅下面我的完整 list 文件:

CACHE MANIFEST
#rev20


# Explicitly cached entries
  ../css/sencha-touch.css
  ../Site.css
  ../css/mycss.css
  ../css/application.css
  ../../Scripts/SenchaTouch/sencha-touch-debug-w-comments.js
  ../../Scripts/js/Base/Index.js
  ../Images/Icons/green_indicator.png
  ../Images/Icons/red_indicator.png
  ../Images/toolbar_image.png
  ../Images/search_icon.png
  ../Images/loading.gif

NETWORK: 
*

编辑:

我最初的想法是一旦文件被更改就会自动更新。但是,因为浏览器依赖于 list 文件来通知它更改(我认为),所以当发生更改时,#rev 数字需要递增。即使那样,当我测试时,我也需要刷新页面几次才能让它重新加载文件。我怀疑这与浏览器加载和处理资源的顺序有关,但我找不到任何相关信息。

最佳答案

浏览器只有在检测到缓存 list 发生变化时才会更新缓存。增加修订号是强制进行更改的好方法。

浏览器检测到变化后,就会下载文件并准备新版本的缓存。浏览器不会使用新的缓存,直到它完全填满并且您刷新页面。

您可以检测新缓存何时准备就绪并刷新页面以使用此 javascript 立即开始使用它:

function updateCache(){
    window.applicationCache.swapCache();
    window.location.reload();
}

window.applicationCache.addEventListener("updateready", updateCache, false);

关于ipad - ASP.NET list 文件脚本未刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5535634/

相关文章:

ipad - iPad:遍历UITableView中的每个单元格吗?

ipad - Interface Builder 中 Storyboard Canvas 上 Popover 内导航 Controller 的大小

ASP.NET 本地化 : Do changes in resx files results in sessions being killed?

asp.net-mvc-3 - MVC3 - 使用 Entity Framework 设置 Controller 时出错

android - 为什么我的应用程序请求 "prevent phone from sleeping"权限?

css - iPad 上的 flex 列折叠

ios - 如何从 Pop 导航到其他 View Controller

asp.net-mvc - MVC3 - 'Element ' 链接“无法嵌套在元素 'link' 内” - 尝试添加页面特定的 CSS

android.intent.category.DEFAULT 可能会造成麻烦

delphi - 安装程序如何查看 list ?德尔福