将部分视图缓存 Asp.net MVC 5

3
我正在使用jQuery Load调用我的部分视图。
我尝试使用[OutputCache(Duration = 10, VaryByParam = "*")],但结果相同,我得到了200 Ok而不是304未修改。
setInterval(function () {
    $("#ETLjobs").load('@Url.Action("indexp","JobsETL")');
}, 5000);

我的控制器是

[DonutOutputCache(Duration = 500)]
public ActionResult Indexp()
{
    var x = db.BIOGetETLJobs();
    var  y = from xx in x
                where xx.etat!="Completed"
                select xx;
    return PartialView(y);
}

顺便问一下,如何将加载操作更改为长轮询?

缓存实际上正在工作,我收到了200 OK(来自缓存)。


2
你做过类似于 $.ajaxSetup({cache:false}); 这样的设置吗?我相信这会防止缓存起作用,因为每个请求都被渲染成唯一的。 - Slicksim
2
不,缓存适用于结果类型为application/json的情况,但不适用于Text/html。 - user3489866
1个回答

4
使用ASP.NET输出缓存时,即使内容从服务器的输出缓存中提取,您仍将始终获得200 OK响应。这是预期的行为。
服务器不会尝试确定本地缓存是否比服务器的输出缓存旧,因此不会返回304未修改状态码。

是的,我弄明白了,但它返回304未修改和200 OK(来自缓存),我不明白为什么不能返回相同的响应。 - user3489866
1
“它返回304未修改和200 OK(来自缓存)”是什么意思?它在什么时候返回什么? - Rune
一个部分视图是304未修改,另一个是200 OK(来自缓存),在同一页中,我如何强制结果为304未修改? - user3489866

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接