在该情况下,我们应该使用查询串(的VaryByParam)在ASP.NET实现缓存?

谁能给在Web的应用程序时的真实情况的例子?

有帮助吗?

解决方案

Products.aspx?productID=12345

显然,你不想Products.aspx的输出缓存,具有得到要求的第一款产品的数据。

详细地

如果我打Products.aspx?productID=12345页面会为我处理,查找产品12345信息,并缓存结果。然后你打Products.aspx?productID=54321,页面不会为你进行处理,而是products.aspx将从输出缓存中检索,你会看到12345不好的信息。的VaryByParam解决此问题。

其他提示

最经典的例子可以是::一种产品目录

它可以具有一个网址结构,如下所示:

http://www.myshop.com/Catalog/ViewAllProducts.aspx

http://www.myshop.com/Catalog/ViewAllProducts.aspx?PageNum=123&PageSize=50

http://www.myshop.com/Catalog/ViewProduct.aspx?ProductID=12345

第一个网址的所有产品的完整列表。有没有查询字符串在这里,但第二个网址是相同的网页,但与分页。页码(页次)和每页项目(每页)都查询字符串的数量,因此假定用户不能重新排序的产品列表中,两个不同的用户请求:

http://www.myshop.com/Catalog/ViewAllProducts.aspx?PageNum=123&PageSize=50

URL将得到相同的信息。第一个请求可以缓存这个数据,以便在以后的时间第二个请求并不需要返回到数据库中获得(有关他们的详细信息:价格,描述等)的产品项目,以显示它们

第三URL是一个单一的产品详情屏幕与产品ID(其可以是从数据库的唯一标识符),因为它是单一查询字符串参数。为此多个请求将几乎总是需要返回相同的数据(除非价格或描述或特定产品变更频繁的基础上的一些其他元素)。一旦选择了“产品ID”基于查询字符串(和它在不同的产品的价值变化)高速缓存将大大降低数据库的负载。确保高速缓存持续时间不的的长将确保缓存在合理的时间到期应实际后端数据库的数据变化。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top