Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在ASP.NET MVC中调试AJAX缓存_Asp.net Mvc_Ajax_Jquery - Fatal编程技术网

Asp.net mvc 在ASP.NET MVC中调试AJAX缓存

Asp.net mvc 在ASP.NET MVC中调试AJAX缓存,asp.net-mvc,ajax,jquery,Asp.net Mvc,Ajax,Jquery,我有一个简单的概念证明,它似乎处理缓存很奇怪。以下是观点: <script> $('#clickToLoad').click(function() { $.ajax({ url: "<%=ResolveUrl("~/Home/AjaxCacheTest") %>?" , dataType: 'json' ,ifModified: true ,cache: true

我有一个简单的概念证明,它似乎处理缓存很奇怪。以下是观点:

<script>       
$('#clickToLoad').click(function() {
    $.ajax({
        url: "<%=ResolveUrl("~/Home/AjaxCacheTest") %>?"
        , dataType: 'json'
            ,ifModified: true
            ,cache: true
        ,success: function(sourceData) {
        }
    });
});
</script>
我希望通过缓存得到一个结果,但是,似乎AjaxCacheTest不会缓存,除非我自己请求它(也就是说,在浏览器窗口中,而不是在AJAX中)

设置cache:true没有帮助。设置ifModified:true确实会导致缓存,但它不会调用success函数,因此无法使用结果

是否有允许缓存并仍然调用响应回调的选项

更新:
谢谢,忘了加那些了。我正在使用firebug进行测试,并通过查看响应代码(200OK vs 302)和请求的响应时间来确定如何处理缓存。这一切都在Visual Studio的内置服务器(Cassini?)上完成。

以下是场景中缓存的工作方式。假设您定义了以下操作

[OutputCache(VaryByParam = "none", Duration = 5)]
public ActionResult AjaxCache()
{
    return Json(new { date = DateTime.Now }, JsonRequestBehavior.AllowGet);
}
如果未显式设置属性,则默认为该属性,这意味着:

输出缓存可以位于 浏览器客户端(其中包含请求) 在代理服务器(或任何 (其他服务器)参与 请求,或在 请求已被处理。此值 对应于 HttpCacheability.Public枚举 价值观

Duration=5
表示内容将被缓存5秒。接下来发送ajax请求:

<%= Html.ActionLink("cache test", "AjaxCache") %>

<script type="text/javascript">
$(function() {
    $('a').click(function() {
        $.ajax({ url: this.href,
            success: function(json) {
                $('#result').html(json.date);
            }
        });        
        return false;
    });
});
</script>

<div id="result"></div>

你在测试什么?IIS?卡西尼号?您是否处于调试模式(我指的是web.config中的设置)?您是否通过FireBug或类似工具检查了Request和response标题?请添加问题的答案。看起来这是有点工作…我不得不升级到MVC2来尝试它,也许这与它有关。它不再发送304s,只发送200s。我会做更多的测试,稍后再解决,谢谢。是的,这在MVC2中有效,不知道MVC1中有什么问题。只有一个警告;至少在我的例子中,我必须向ajax调用添加数据类型:“json”。谢谢
<%= Html.ActionLink("cache test", "AjaxCache") %>

<script type="text/javascript">
$(function() {
    $('a').click(function() {
        $.ajax({ url: this.href,
            success: function(json) {
                $('#result').html(json.date);
            }
        });        
        return false;
    });
});
</script>

<div id="result"></div>
Cache-Control: public, max-age=5
Expires: Fri, 26 Feb 2010 14:09:02 GMT
Last-Modified: Fri, 26 Feb 2010 14:08:57 GMT
Vary: *