I am working on an asp.net MVC web application and I need to know if there are any differences when defining the OutputCache for my action methods as follow:-
[OutputCache(Duration = 0, Location = OutputCacheLocation.Client, VaryByParam = "*")]
VS
[OutputCache(NoStore = true, Duration = 0, Location="None", VaryByParam = "*")]
VS
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
Will all the above three setting prevent caching the data , or each on have different meaning ?
Second question what is the main difference between defining duration=0
& NoStore=true
? will both of them prevent caching ? Thanks
The NoStore
property is used to inform proxy servers and browser that they should not store a permanent copy of the cached content by setting Cache-Control: no-store
within the request header.
Duration simply specifies how long the content of the controller action should be cached, e.g. 10seconds. This will set the Cache-Control: max-age
to >= 0. And also sets the Expires
header to a valid timestamp.
To your initial question, no, the three variations do not have the same meaning.
[OutputCache(Duration = 0, Location = OutputCacheLocation.Client, VaryByParam = "*")]
create a cache-header like this
Cache-Control: private, max-age=0 Expires: Fri, 03 Jan 2014 12:32:15 GMT
[OutputCache(NoStore = true, Duration = 0, Location="None", VaryByParam = "*")]
creates the following cache-header:
Cache-Control: no-cache, no-store Pragma: no-cache Expires: -1
This is basically what you want to see if you want to prevent caching by all means. VaryByParam is optional (at least in MVC5) and the default is "*" anyways, so you can simply use [OutputCache(NoStore = true, Location = OutputCacheLocation.None)]
instead.
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
even creates a public cache control...
Cache-Control: public, no-store, max-age=0 Expires: Fri, 03 Jan 2014 12:36:38 GMT
There is a good post on SO which discusses the difference between max-age=0 and no-cache etc..
At the end all three might prevent caching your data but still have different meanings.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With