如果查询字符串不同,则使用浏览器缓存中的相同页面

时间:2012-10-28 20:11:39

标签: c# asp.net-mvc jqgrid browser-cache outputcache

ASP.NET MVC2页面用于在浏览器中显示顺序,如中所述 How to fill document header from jqgrid data

在页面加载时,javascript从浏览器中检索正确的文档并将其绑定到页面元素。

文档ID在查询字符串中指定,如:

www.mysite.com/GetDocument?Id=1
www.mysite.com/GetDocument?Id=2

文档缓存在浏览器中:

[OutputCache(Location = OutputCacheLocation.Downstream, Duration = 20 * 60,VaryByParam = "*")]
public ActionResult Index(int id) 

但是不使用浏览器缓存,因为为每个查询字符串缓存了不同的页面。如何强制borwser缓存不依赖于查询字符串中的id参数的页面? 或者在post参数中传递id是否更好?

1 个答案:

答案 0 :(得分:0)

您必须更改VaryByParam属性。

如果id是唯一可能的查询字符串键,那么你可以写:

[OutputCache(Location = OutputCacheLocation.Downstream, Duration = 20 * 60,VaryByParam = "none")]
public ActionResult Index(int id) 

因此它只会创建一个缓存页面。

如果可能有其他参数,您可以在VaryByParam

中定义它们
[OutputCache(Location = OutputCacheLocation.Downstream, Duration = 20 * 60,VaryByParam = "name;age")]
public ActionResult Index(int id)