2012-07-06 123 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