看來HttpWebRequest在WP7緩存是默認啓用的,我該如何關閉它? 添加一個隨機 參數url +「?param =」+ RND.Next(10000)的作品,但它是相當棘手,我不知道它是否會與所有服務器 工作。WP7 HttpWebRequest沒有緩存
回答
你怎麼知道這是手機,而不是服務器(或代理之間的某個地方)哪個緩存?
你是否檢查過與Fiddler2(或同等學歷)?
您是否嘗試過設置標頭來禁用緩存?
喜歡的東西:
myRequest = (HttpWebRequest)WebRequest.Create(myUri);
myRequest.Headers["Cache-Control"] = "no-cache";
myRequest.Headers["Pragma"] = "no-cache";
這不是服務器,因爲相同的URL更新corectly在BlackBerry,iPhone和Android – Janci 2010-12-16 14:36:57
更改標頭不起作用,不幸的是。 – dethSwatch 2010-12-28 21:23:53
我遇到了這個問題,我正在爲WP7應用開發ReSTful端點。更改服務器以確保它返回「Cache-Control」頭設置爲「no-cache」的響應,從而解決了此問題。 – dwynne 2011-04-06 13:27:30
添加隨機數不壞,它會工作。我使用了時間(在Ajax調用中)。被放置在像一個文件夾的網址。
是的,它現在工作,但我不滿意這一點,我正在尋找更好的解決方案 – Janci 2010-12-16 14:53:35
與隨機數,你可以得到相同的數字,但隨着時間(像從午夜的毫秒 - 1至86 400 000)它幾乎不可能。你甚至可以把這兩個結合起來。你用POST試過了嗎? – 2010-12-16 15:41:29
有可能... :)我花了實驗的一個星期,答案非常簡單:
HttpWebRequest _webRequest = WebRequest.CreateHttp(_currentUrl);
_webRequest.AllowReadStreamBuffering = false
_webRequest.BeginGetResponse(_onDownload,
userState);
它不能解決緩存問題。 – 2011-05-28 18:07:09
不解決問題+拋出內部異常「不支持」。 – 2012-03-04 16:50:43
以供將來參考,這個工作對我來說(我不能因使用額外的查詢參數項目要求):
HttpWebRequest request = HttpWebRequest.CreateHttp(url);
if (request.Headers == null)
{
request.Headers = new WebHeaderCollection();
}
request.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.UtcNow.ToString();
作品。不知道爲什麼。 – 2012-03-04 16:55:16
@Agent_L WP7 HTTP客戶端的請求看起來不同 – SandRock 2012-03-30 09:12:51
我們已經看到了與Chrome託管的Silverlight相同的行爲。
如果我們想要防止緩存,我們會在我們的請求URL中添加一個"?nocache=" + DateTime.Now.Ticks.ToString()
。
HttpClient(便攜式Windows Phone)「Cache-Control」:服務器端的「no-cache」有時僅適用。而且我也無法將查詢字符串隨機值添加到RESTful API調用中。從@frno做工不錯,看起來像的HttpClient
解決方案:
client.DefaultRequestHeaders.IfModifiedSince = DateTime.UtcNow;
謝謝。
這是唯一對我有用的方法。其他緩存標頭似乎沒有效果。 – 2013-08-31 14:40:17
非常好的解決方案,也適用於Windows 8.1 Store Universal應用程序。 – NBoymanns 2014-07-07 11:09:32
這是爲我們工作,現在它不時拋出304s。 – 2014-08-07 18:22:12
我發現3種方式
- 添加一個隨機的查詢字符串的URI的末尾(想想Guid.NewGuid()),這將避免在客戶端上的緩存作爲查詢字符串每次都會有所不同
string uri =「http://host.com/path?cache=」+ Guid.NewGuid()。的ToString();
- 指定WCF服務操作中在OutgoingResponse頭沒有高速緩存:
- 使用AspNetCacheProfile屬性標記您的服務操作:
var __request = (HttpWebRequest)WebRequest.Create(url.ToString()); if (__request.Headers == null) __request.Headers = new WebHeaderCollection(); __request.Headers.Add("Cache-Control", "no-cache");
[AspNetCacheProfile("GetContent")] public ResultABC GetContent(string abc) { __request = (HttpWebRequest)WebRequest.Create(abc); return __request; }
和更新您的web.config
<system.web> <caching> <outputCache enableOutputCache="true" /> <outputCacheSettings> <outputCacheProfiles > <add name="GetContent" duration="0" noStore="true" location="Client" varyByParam="" enabled="true"/> </outputCacheProfiles> </outputCacheSettings> </caching> ... </system.web>
- 1. Wp7上的HttpWebRequest AsyncWaitHandle有System.NotSupportedException
- 2. HttpWebRequest GET ProtocolViolationException WP7
- 3. Httpwebrequest緩存在Windows Phone 7中
- 4. 即使AllowWriteStreamBuffering緩存HttpWebRequest false
- 5. HttpWebRequest BeginGetResponse回調沒有射擊WP8(在WP7上工作)
- 6. WP7 - 防止RestSharp緩存
- 7. ManualResetEvent with WP7上的HttpWebRequest
- 8. WP7從異步HttpWebRequest的
- 9. WP7中的HttpWebRequest超時
- 10. FLV沒有緩存
- 11. 燒瓶緩存沒有緩存
- 12. 有沒有Python緩存庫?
- 13. 啓用緩存的HttpWebRequest引發異常
- 14. 當緩存命中時,HttpWebRequest沒有返回響應流,並且AllowAutoRedirect == false
- 15. Zend_Cache_Frontend_Page沒有緩存(沒有工作)
- 16. Travis沒有緩存目錄
- 17. JavaScript沒有緩存圖像
- 18. AsyncImageView沒有緩存圖像
- 19. Django緩存沒有刷新
- 20. 沒有按順序緩存
- 21. Apache Archiva沒有緩存?
- 22. HTTPS圖像沒有緩存
- 23. 文件沒有被緩存
- 24. CakePHP沒有緩存視圖
- 25. 沒有緩存的EclipseLink QueryException
- 26. Suds沒有緩存wsdls
- 27. Mapcache沒有緩存WMS
- 28. jqgrid分頁沒有緩存
- 29. HttpWebRequest餅乾沒有設置
- 30. 在wP7中停止圖像緩存
發現使用HttpWebRequest對象這個問題一個問題嗎?目前提供的答案都是服務器端解決方案。 (除了時間戳,我不喜歡) – invalidusername 2012-01-09 02:07:09
順便說一句,一個很好的參數是DateTime.Now.Ticks。它會一直改變,它的大小是可以接受的(至少在頭幾十年:-)) – invalidusername 2012-01-09 02:41:46