【问题标题】:Force Cache Refresh When Editing and Redisplaying Content编辑和重新显示内容时强制刷新缓存
【发布时间】:2011-08-03 12:17:13
【问题描述】:

我正在使用 asp.net mvc 并有一个显示项目的视图和一个允许编辑项目的视图。当用户提交一个已编辑的项目时,它会将他们重定向到该项目的视图。重定向时不会反映更改,因为正在缓存项目视图。查看项目页面也可以内联编辑,然后提交按钮使用 javascript 提交,然后刷新页面。

我注意到,当您编辑项目时,stackoverflow 会以某种方式使这项工作发挥作用,它将您重定向到反映您所做更改的页面。他们的缓存设置为 public,max-age=120,所以我很惊讶浏览器不会在没有反映更改的情况下提取本地副本...

无论如何,有没有办法在这些情况下强制刷新缓存?我不希望附加随机查询字符串值,但如果没有其他方法,我会这样做。

【问题讨论】:

    标签: asp.net asp.net-mvc caching


    【解决方案1】:

    您可以设置一个缓存控制元标记。把它放在你的头部

    <META HTTP-EQUIV="Expires" CONTENT="Tue, 01 Jan 1980 1:00:00 GMT">
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    

    http://www.chami.com/tips/internet/113096I.html

    或.Net方式

    <%@ OutputCache Location="None" VaryByParam="None" %>
    

    http://www.dailycoding.com/Posts/how_not_to_cache_a_page_output_in_aspnet.aspx

    【讨论】:

    • 这会在显示该项目的视图上吗?如果可能的话,我们肯定希望该页面被缓存,问题是如果它已经被缓存并且用户更新了该项目,它仍然会被缓存。此解决方案需要完全禁用缓存,这不是我们查看项目页面的选项。
    • 听起来您需要确保您的页面显示正确的数据,而不是旧数据。如果您保存数据。我猜它仍然会在您的屏幕上显示旧数据。如果按 ctrl F5 会发生什么?
    • ctrl-F5 不会刷新数据,它会带回缓存的服务器端副本。如果我将缓存更改为私有,ctrl-F5 会更新为最新数据。
    • Control F5 强制浏览器不使用缓存,以便向您显示您将哪些数据放入页面。您可以使用建议的方法关闭缓存并查看页面上返回的内容。
    • 您能详细解释一下元标记的含义吗?我假设我不想要它们,除非用户从编辑中被重定向,但在这种情况下,浏览器只是提取本地缓存的副本。我要核对服务器端缓存,然后尝试在禁用缓存的情况下重定向到视图 url,看看是否可行...
    猜你喜欢
    • 2016-11-25
    • 2020-09-05
    • 2012-09-16
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多