Asp.net mvc MVC OutputCache仍然允许我的控制器在第二次呼叫时被击中

Asp.net mvc MVC OutputCache仍然允许我的控制器在第二次呼叫时被击中,asp.net-mvc,Asp.net Mvc,下面是控制器操作,通过$.ajax调用 [OutputCache(Duration = 60, Location = OutputCacheLocation.Client, NoStore = true, VaryByParam = "*")] public JsonResult GetSomeViewModel(int id, string searchDate) 我在该操作中有一个断点 现在,我希望在第二次调用时(至少在60秒内),我的断点不会被击中,因为浏览器应该缓存该响应 这是我第一次

下面是控制器操作,通过$.ajax调用

[OutputCache(Duration = 60, Location = OutputCacheLocation.Client, NoStore = true, VaryByParam = "*")]
public JsonResult GetSomeViewModel(int id, string searchDate)
我在该操作中有一个断点

现在,我希望在第二次调用时(至少在60秒内),我的断点不会被击中,因为浏览器应该缓存该响应

这是我第一次尝试使用此功能

我做错了什么


这在所有主流浏览器上都会发生。

您提到使用的是
$.ajax
,听起来像jQuery。默认情况下,jQuery将发送带有缓存buster的请求。如果监视网络流量,您可能会在ajax请求的查询字符串中看到类似于
\u1406209313719
的内容。整数是一个时间戳,因此它将始终更改,并适用于大多数浏览器缓存

通过在ajax方法中将
cache
设置为false,可以将jQuery设置为不使用缓存buster

$.ajax({
    cache: false
});

您提到使用了
$.ajax
,这听起来像jQuery。默认情况下,jQuery将发送带有缓存buster的请求。如果监视网络流量,您可能会在ajax请求的查询字符串中看到类似于
\u1406209313719
的内容。整数是一个时间戳,因此它将始终更改,并适用于大多数浏览器缓存

通过在ajax方法中将
cache
设置为false,可以将jQuery设置为不使用缓存buster

$.ajax({
    cache: false
});

我也遇到了这个问题。我使用$.ajax从RSS提要异步加载内容。在使用
cache:true
配置了$.ajax调用之后(是的,true,用于禁用缓存破坏;有关详细信息,请参阅)。我仍然在处理后续请求

我的假设是存在一个阻止OutputCache激活的阈值。我的研究引导我(小节:缓存复杂性),这些设置可能会影响OutputCache实际使用的时间。我的基本测试似乎确认只有前两个请求进入操作,但3个或更多请求(在10秒钟的时间内)没有进入操作


我很好奇是否有其他人能够更广泛地测试OutputCacheAttribute,并且能够证实或反驳我的发现。

我也遇到了这个问题。我使用$.ajax从RSS提要异步加载内容。在使用
cache:true
配置了$.ajax调用之后(是的,true,用于禁用缓存破坏;有关详细信息,请参阅)。我仍然在处理后续请求

我的假设是存在一个阻止OutputCache激活的阈值。我的研究引导我(小节:缓存复杂性),这些设置可能会影响OutputCache实际使用的时间。我的基本测试似乎确认只有前两个请求进入操作,但3个或更多请求(在10秒钟的时间内)没有进入操作


我想知道是否有其他人能够更广泛地测试OutputCacheAttribute,并且能够证实或反驳我的发现。

您的
缓存设置是向后的
cache:false
指示jQuery附加cache-buster查询参数(更改每个请求以使其不能被缓存)。您可能希望设置
cache:true
以消除缓存破坏程序。您将
cache
设置向后
cache:false
指示jQuery附加cache-buster查询参数(更改每个请求以使其不能被缓存)。您可能希望设置
cache:true
以消除缓存破坏器。