【问题标题】:ASP.NET Manifest file scripts not refreshedASP.NET 清单文件脚本未刷新
【发布时间】:2011-07-28 23:35:41
【问题描述】:

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

Network:
*

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

Application Cache Checking event
Application Cache NoUpdate event

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

有什么想法吗?

请看下面我的完整清单文件:

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: 
*

编辑:

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

【问题讨论】:

  • 嗨,你有没有得到这个? - 我也有同样的问题...
  • @Journeyman。是和不是。见上面的编辑

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


【解决方案1】:

浏览器仅在检测到缓存清单发生更改时才会更新缓存。增加修订号是强制更改的好方法。

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

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

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

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

【讨论】:

    猜你喜欢
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多