簡體   English   中英

iPhone不緩存Asp.Net頁面

[英]iPhone not caching Asp.Net pages

如果我創建一個基本的asp.net應用程序並設置@outputcache,則該頁面可以在桌面上的chrome&IE中很好地緩存。 對於default.aspx,第一個請求返回200,隨后的請求返回304。 (我正在通過提琴手進行監視)

但是從iPhone訪問同一頁面時,我注意到它總是為aspx文件返回200。 所有資源都在緩存中,並且正在返回304。 因此,這只是aspx頁面。

任何想法為什么會這樣?

一些技術細節:

  • <%@ OutputCache持續時間=“ 30” VaryByParam =“無”位置=“任何”%>
  • 庫存標准ASPX頁面。 內容長度:2464
  • 使用刷新控件或鍵盤“轉到”在iPhone上重新加載沒有影響。
  • 顯式設置eTag不會產生任何影響
  • 設置了上次修改
  • 但是沒有為ASPX頁發送If-Modified-Since
  • 最新的IOS 4.3.1
  • 使用ASP.NET 4在Win7上運行的IIS 7.5

我想我知道了。 隨時糾正我。 網站緩存是一個非常混亂的領域。

問題的根源在於,iPhone沒有隨請求一起發送“ If-Modified-Since”標頭。 否則,服務器將無法回復304。

經過一些實驗,我發現如果您使用鏈接導航到頁面,它將發送'If-Modified-Since'標頭,並且一切都按預期工作,並且服務器巧妙地返回304。

即使已緩存它也不會發送“ If-Modified-Since”的情況:

  • 輸入URL
  • 按下刷新按鈕
  • 選擇URL,然后按Go
  • 作為書簽打開
  • 在主屏幕上從保存的參考打開

它似乎只對主URL進行了此操作,否則所引用的其他所有內容都具有“ If-Modified-Since”標頭(如果適用)。

注意:我僅在IOS 4.3.1上進行了測試。 查看Paddo發送的鏈接並對該區域進行進一步調查,看來蘋果喜歡在IOS版本之間更改緩存行為。

找到了這個,重新php(也適用於.net)... iphone似乎不緩存任何大小超過15k的資源,並且總緩存大小為1.5MB。 請注意,這是舊信息,因此可能已更改。

http://www.phpied.com/iphone-caching/

對於超過15k的文件,解決方案是使用脫機應用程序緩存清單文件,如下所示: http : //developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/Client-SideStorage/Client -SideStorage.html

PS:我知道您的內容長度在15k以下-因此必須解決其他問題...但是我仍然希望清單文件可以工作。

對於ASP.NET只需使用

Response.AddHeader( "Cache-Control","no-cache");

要么

Response.AddHeader( "Pragma", "no-cache");

要么

Response.Cache.SetCacheability(HttpCacheability.NoCache);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM