我在 MVC4 应用程序中使用 ASP.NET MVC Wrapper。
除了一个特定问题外,一切正常:我为 Kendo UI Grid 定义了一个数据源,当视图加载时,读取操作按预期调用。
但是,当页面重新加载时,“读取”请求会得到 304 结果的响应。
如何通过数据源配置禁用缓存?
我在 MVC4 应用程序中使用 ASP.NET MVC Wrapper。
除了一个特定问题外,一切正常:我为 Kendo UI Grid 定义了一个数据源,当视图加载时,读取操作按预期调用。
但是,当页面重新加载时,“读取”请求会得到 304 结果的响应。
如何通过数据源配置禁用缓存?
您可以将 Kendo 数据源中的“缓存”属性设置为 false,这显然(注意:我尚未对此进行测试)将强制在每次请求时重新获取请求的页面。
将缓存设置为 false 会将“_=[TIMESTAMP]”参数附加到请求中,如有必要,可以在服务器/控制器端对其进行解析,以避免服务器端缓存操作。
还要注意,您可以为每个 Kendo 传输操作指定缓存行为(即,它可以在 CRUD 操作级别或整个传输操作级别)。
见这里:http ://docs.kendoui.com/api/framework/datasource#configuration-transport.read.cache-Boolean
代码:
transport: {
read: {
cache: false
}
}
.Read(read => read.Action("Action", "Controller", new { area = "Area" }).Type(HttpVerbs.Post))
您可以尝试在加载视图的服务器端控制器操作上进行装饰
[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 响应建立过期策略,并将自动缓存页面或用户控件输出。
不能通过数据源配置成为控制器。您必须将属性应用于控制器上的 Read 方法以防止缓存。
另一种方法是将 [HttpPost] 属性应用于您的控制器方法。然后将数据源配置为不使用 GET 方法,在这种情况下,它将默认使用 POST 方法。