2012-07-06 91 views
0

我想创建一个具有离线功能的应用程序。我所创建的清单文件看起来像这个 -在asp.net中的离线应用程序

CACHE MANIFEST 
# version 1.0.0 

CACHE: 
/ShareBill.Web-Offline/ 
/ShareBill.Web-Offline/Groups 
/ShareBill.Web-Offline/Content/Site.css 
/ShareBill.Web-Offline/Content/jquery-ui.css 
/ShareBill.Web-Offline/Scripts/ShareBill.js 
/ShareBill.Web-Offline/Scripts/lib/jquery-1.7.2.min.js 
/ShareBill.Web-Offline/Scripts/lib/jquery-ui.min.js 
/ShareBill.Web-Offline/Scripts/TransactionsIndex.js 
/ShareBill.Web-Offline/Content/Images/ajax-loader.gif 
/ShareBill.Web-Offline/Content/Images/br_down_icon.png 

NETWORK: 
/ShareBill.Web-Offline/Transactions/Filters 

时,我认为这个网址/ShareBill.Web-Offline/Groups我想到的是。我的浏览器不应该向服务器发出任何请求,否则整个脱机目的将失效。

但我可以观察到使用fiddler的是,浏览器每次刷新页面时都会对清单文件发出请求。我确信我可以看到Chrome开发工具中的缓存资源。

现在,当我关闭IIS并发出类似请求时,我终止将AppCache状态设置为OBSOLETE。然后在下一页刷新时,我得到一个404响应。我是否在执行方面缺少一些东西?

+0

如果请求收到一个404或410响应,AppCache应该只设置为'OBSOLETE',你的服务器需要运行浏览器来接收这样的响应。如果服务器没有运行,浏览器根本没有收到任何回应。 – robertc 2012-07-06 15:31:58

回答

0

我应用了Expires头部来请求这个Manifest文件。这工作:)

+0

什么过期标题你申请?应用程序应该每次都要求清单文件,以便它可以查明是否有更新。 – robertc 2012-07-06 15:26:23

+0

我添加了2050-01-01(yyyy-mm-dd)的过期日期。这基本上不会向服务器发出任何请求。仍然有一个问题,当服务器端的任何js文件被更新时,我需要清除应用程序缓存。尽管我更新了我的清单文件,但我不会在客户端上获取这些更改,因为它自己被缓存的清单文件。 – Tushar 2012-07-07 04:13:56

+0

如果您的清单文件永不过期,那么您的appcache将永远不会更新,这就是浏览器每次都检查清单文件的原因。 – robertc 2012-07-07 12:26:02