加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET 4.0中的不同服务器和客户端缓存策略

发布时间:2020-12-16 07:39:24 所属栏目:asp.Net 来源:网络整理
导读:我对ASP.NET输出缓存缺乏一点基本的了解. 在我的情况下,我的资源与我的VaryByCustom密钥紧密相关.在服务器端,我喜欢这些密钥无限期地缓存,直到密钥发生变化.这些缓存条目没有理由在计时器上清除. 但是,客户应该每小时检查一次,以获得服务器认为最新鲜的内容.
我对ASP.NET输出缓存缺乏一点基本的了解.

在我的情况下,我的资源与我的VaryByCustom密钥紧密相关.在服务器端,我喜欢这些密钥无限期地缓存,直到密钥发生变化.这些缓存条目没有理由在计时器上清除.

但是,客户应该每小时检查一次,以获得服务器认为最新鲜的内容.

如果我将持续时间设置为1小时,我知道在客户端上正确设置了过期标头.但它是否也驱逐了服务器端缓存?有没有办法确保响应保持缓存在服务器上,直到我的VaryByCustom更改,但仍然允许更频繁的客户端到期?

解决方法

这里需要注意的重要一点是,如果你的VaryByCustom发生了变化,asp.net会存储一个单独的缓存版本的页面.

因此,假设你的VaryByCustom-“custom1”持续时间=“60”,那么这将被缓存60秒.

如果您的VaryByCustom更改为“custom2”且持续时间=“60”,asp.net将在缓存中存储一??个单独的副本,这与“custom1”的缓存不同,此单独版本将缓存60秒.

测试这个的简单方法是通过基于浏览器更改VaryByCustom.

在Global.asax中

public override string GetVaryByCustomString(HttpContext context,string custom)
        {
            if (custom == "browser")
            {
                string browserName;
                browserName = Context.Request.Browser.Browser;
                browserName += Context.Request.Browser.MajorVersion.ToString();

                return browserName;
            }
            else
            {
                return base.GetVaryByCustomString(context,custom);
            }

        }

ASPX

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="WebFormsPlayGround._Default" %>
    <%@ OutputCache Duration="40" VaryByParam="None" VaryByCustom="browser" %>

页面加载

protected void Page_Load(object sender,EventArgs e)
        {
            lblTime.Text = "The time now is: <br/>";
            lblTime.Text += DateTime.Now.ToString();
        }

我没有在aspx中包含asp:Label的标记,但我希望你能得到一般的想法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读