【问题标题】:Deleting browser cache on postback programmatically以编程方式在回发时删除浏览器缓存
【发布时间】:2013-09-12 23:14:56
【问题描述】:

有没有办法以编程方式在回发时删除我的浏览器缓存?我正在使用一个 jquery 函数,该函数在使用 cache:true 的按钮单击时使用 ajax

function CallSyncAjax(url, args, resid, EnableCache, ErrorDivID) {
$.ajax({
    type: "GET",
    url: url,
    data: args,
    cache: EnableCache,
    success: function (data) {
        var StrResponse;
        StrResponse = data.split('@@@');
        if (resid == "1001") {
            LoginByAccountRes(StrResponse[0]);
        }
    }
   })
 }

C#:

 protected override void OnLoad(EventArgs e)
{
    // Set Cacheability...
    DateTime dt = DateTime.Now.AddMinutes(1);
    Response.Cache.SetExpires(dt);
    Response.Cache.SetMaxAge(new TimeSpan(dt.ToFileTime()));

    // Complete OnLoad...
    base.OnLoad(e);
}

问题是每当我在一分钟后刷新页面,即使我关闭浏览器并重新打开它,缓存仍然存在

【问题讨论】:

  • 为什么不试试DateTime dt = DateTime.Now.AddMinutes(-1);
  • 试试Response.Cache.SetCacheability(HttpCacheability.NoCache);
  • 因为它不起作用

标签: c# javascript jquery asp.net caching


【解决方案1】:

你可以在你的页面上使用这些元标记来表示不缓存

<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>

但由于浏览器的安全原因,您无法以编程方式清除浏览器缓存。

【讨论】:

    【解决方案2】:

    由于浏览器安全原因,您无法通过代码清除浏览器的历史记录,您只能设置 HTTP 标头来告诉浏览器不要访问您的页面,使用以下方法:

    缓存控制:无缓存

    【讨论】:

      【解决方案3】:

      JavaScript 只允许在浏览器上做某些事情,访问浏览器的缓存不是其中之一。

      不过,您可以使用 meta 标签控制网页的缓存。

      <meta http-equiv="cache-control" content="max-age=0" />
      <meta http-equiv="cache-control" content="no-cache" />
      

      【讨论】:

        猜你喜欢
        • 2012-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-16
        • 1970-01-01
        • 2011-12-04
        • 2011-12-30
        相关资源
        最近更新 更多