2013-07-19 13 views
12

मैं ASP.NET WebAPI का उपयोग कर रहा है और सब कुछ में कैशिंग को रोकने के लिए निम्नलिखित कोड है:वेबएपी से नवीनतम प्रतिक्रिया कैशिंग से क्रोम को कैसे रोकें?

public override System.Threading.Tasks.Task<HttpResponseMessage> ExecuteAsync(System.Web.Http.Controllers.HttpControllerContext controllerContext, System.Threading.CancellationToken cancellationToken) 
{ 
    System.Threading.Tasks.Task<HttpResponseMessage> task = base.ExecuteAsync(controllerContext, cancellationToken); 
    task.GetAwaiter().OnCompleted(() => 
             { 
              task.Result.Headers.CacheControl = new CacheControlHeaderValue() 
              { 
               NoCache = true, 
               NoStore = true, 
               MaxAge = new TimeSpan(0), 
               MustRevalidate = true 
              }; 
              task.Result.Headers.Pragma.Add(new NameValueHeaderValue("no-cache")); 
              task.Result.Content.Headers.Expires = DateTimeOffset.MinValue; 
             }); 
    return task; 
} 

परिणाम हेडर इस (क्रोम) की तरह लग रहे:

Cache-Control:no-store, must-revalidate, no-cache, max-age=0 
Content-Length:1891 
Content-Type:application/json; charset=utf-8 
Date:Fri, 19 Jul 2013 20:40:23 GMT 
Expires:Mon, 01 Jan 0001 00:00:00 GMT 
Pragma:no-cache 
Server:Microsoft-IIS/8.0 

मैं कहा, "नहीं- स्टोर "बग के बारे में पढ़ने के बाद (How to stop chrome from caching)।

Request Method:GET 
Status Code:200 OK (from cache) 

किसी को भी किसी भी है:

हालांकि, कोई फर्क नहीं पड़ता कि मुझे क्या करना है, जब मैं कुछ है कि मुझे इस पेज से चला, और उसके बाद "वापस" बटन का उपयोग करते हैं, क्रोम हमेशा कैश से लोड करता है विचार यह क्यों हो रहा है? मैंने पुष्टि की है कि सर्वर इस अनुरोध के लिए कभी हिट नहीं हुआ है।

उत्तर

7

उत्तर यह है कि क्रोम "समाप्त हो जाता है: सोम, 01 जनवरी 0001 00:00:00 जीएमटी" (मूल रूप से नकली तारीख)।

मैं अपने दिनांक बदल क्या वे अपने Google API में उपयोग होने के लिए, और यह काम किया:

Cache-Control:no-store, must-revalidate, no-cache, max-age=0 
Content-Length:1897 
Content-Type:application/json; charset=utf-8 
Date:Fri, 19 Jul 2013 20:51:49 GMT 
Expires:Mon, 01 Jan 1990 00:00:00 GMT 
Pragma:no-cache 
Server:Microsoft-IIS/8.0 

तो, जो इस समस्या को भर आता है किसी और के लिए, सुनिश्चित करें कि आप सेट अपने इस मनमाने ढंग से करने के लिए तिथि समाप्त हो रहा है बनाने के तारीख!

+0

यदि आपने नो-स्टोर सेट किया है, तो नो-कैश सेट न करें, पुन: संशोधित करें, अधिकतम आयु और समाप्त हो जाए क्योंकि वे नो-स्टोर का विरोध करते हैं। नो-स्टोर का मतलब है कि प्रतिनिधित्व को संग्रहीत नहीं किया जा सकता है और शेष निर्देश संग्रहित प्रस्तुतियों के प्रबंधन के नियमों की व्याख्या करते हैं। –

+0

अच्छी तरह से मैंने क्रोम बग की वजह से नो-स्टोर जोड़ा जो नो-कैश को अनदेखा करता है और समाप्त हो जाता है (देखें http://stackoverflow.com/questions/4146813/how-to-stop-chrome-from-caching) ... तो , मुझे नहीं पता कि आप इसके बारे में क्या करना चाहते हैं। – automaton

+0

दुर्भाग्य से नो-कैश का मतलब कैश नहीं है। इसका यह भी अर्थ यह नहीं है कि क्रोम कैश की गई प्रति का उपयोग नहीं कर सकता है। इसका मतलब यह है कि कैश की गई प्रति का उपयोग करने से पहले इसे सर्वर से जांचना होगा। यदि सर्वर सही जानकारी नहीं लौटाता है तो क्रोम खुशी से कैश किए गए परिणाम को वापस कर देगा। –

संबंधित मुद्दे