如何在Kendo UI数据源中禁用“读取”请求缓存

时间:2013-02-20 08:14:24

标签: asp.net-mvc-4 kendo-ui

我在MVC4应用程序中使用ASP.NET MVC Wrapper。

除了一个特定问题外,一切正常: 我为Kendo UI Grid定义了一个数据源,当视图加载时,正在按预期调用读取操作。

但是,当页面重新加载时,“read”请求会得到一个304结果的响应。

如何通过数据源配置禁用缓存?

4 个答案:

答案 0 :(得分:14)

您可以将Kendo dataSource中的'cache'属性设置为false,这显然(注意:我没有对此进行测试)将强制在每次请求时重新获取所请求的页面。

将cache设置为false会在请求中附加“_ = [TIMESTAMP]”参数,如果需要,可以在服务器/控制器端解析该参数,以避免服务器端缓存操作。

另请注意,您可以为每个Kendo传输操作指定缓存行为(即,它可以处于CRUD操作级别或整个传输级别)。

见这里:http://docs.kendoui.com/api/framework/datasource#configuration-transport.read.cache-Boolean

代码:

transport: {
    read: {
        cache: false
    }
}

答案 1 :(得分:9)

.Read(read => read.Action(“Action”,“Controller”,new {area =“Area”})。Type(HttpVerbs.Post))

答案 2 :(得分:5)

您可以尝试使用

加载视图的服务器端控制器操作
[OutputCache(Duration = 0, NoStore = true)]

属性,例如

public class OrdersController : Controller
{
    [httpGet]
    [OutputCache(NoStore = true, Duration = 0)]
    public ActionResult Orders(string userId)
    {
        // your code
        return View(viewModel);
    }
}

NoStore - 一个布尔值,用于确定是否阻止敏感信息的二级存储 Duration - 缓存页面或用户控件的时间(以秒为单位)。在页面或用户控件上设置此属性会为对象的HTTP响应建立过期策略,并自动缓存页面或用户控件输出。

答案 3 :(得分:0)

不能通过Datasource配置控制器。您必须将属性应用于控制器上的Read方法以防止缓存。

另一种方法是将[HttpPost]属性应用于控制器方法。然后将数据源配置为NOT使用GET方法,在这种情况下,它将默认使用POST方法。