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 settingCache-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 theExpires
header to a valid timestamp.To your initial question, no, the three variations do not have the same meaning.
create a cache-header like this
creates the following cache-header:
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.even creates a public cache control...
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.