• 自定义浏览器缓存网站时间,节省网站带宽


    原理:

      很简单,服务器第一次向浏览器输出Head时,添加[LastModified]时间标识,浏览器再次向服务器请求时,会带上时间标识[If-Modified-Since].然后,在服务端判断时间就可以了,返回未修改304

    代码:

            public static DateTime UpdateFlag = DateTime.Now;
            
            protected void Page_Load(object sender, EventArgs e)
            {
    
                if (Request.Headers["If-Modified-Since"] != null)
                {
                    DateTime servernow = DateTime.Now;
                    DateTime.TryParse(Request.Headers["If-Modified-Since"],out servernow);
                    //判断是否已过期
                    if (servernow <= UpdateFlag)
                    {
                        Response.StatusCode = 304;
                        Response.StatusDescription = "Not Modified";
                    }
                    else
                    {
                        Response.Write("");//你的代码                  
                        SetClientCaching(UpdateFlag);
                    }
                }
                else
                {
                    //第一次访问
                    Response.Write("");//你的代码
                    SetClientCaching(UpdateFlag);
                }
    
            }
            
            /// <summary>
            /// 基于绝对时间的访问
            /// </summary>
            /// <param name="response"></param>
            /// <param name="lastModified"></param>
            private void SetClientCaching(DateTime lastModified)
            {
                Response.Cache.SetETag(lastModified.Ticks.ToString());
                Response.Cache.SetLastModified(lastModified);
                Response.Cache.SetCacheability(HttpCacheability.Public);
                Response.Cache.SetMaxAge(new TimeSpan(7, 0, 0, 0));
                Response.Cache.SetSlidingExpiration(true);
    
            }
    
            /// <summary>
            /// 基于文件的访问
            /// </summary>
    
            /// <param name="response"></param>
            /// <param name="lastModified"></param>
            private void SetClientCaching(string fileName)
            {
                Response.AddFileDependency(fileName);
                Response.Cache.SetETagFromFileDependencies();
                Response.Cache.SetLastModifiedFromFileDependencies();
                Response.Cache.SetCacheability(HttpCacheability.Public);
                Response.Cache.SetMaxAge(new TimeSpan(7, 0, 0, 0));
                Response.Cache.SetSlidingExpiration(true);
            }
    
    
  • 相关阅读:
    UVa
    UVa 1630
    P3891 [GDOI2014]采集资源
    一个非常naive的小学数学魔术证明题
    P2831 [NOIP2016 提高组] 愤怒的小鸟
    P4211 [LNOI2014]LCA
    P4137 Rmq Problem / mex 强制在线做法
    P2272 [ZJOI2007]最大半连通子图
    P5664 [CSP-S2019] Emiya 家今天的饭
    盘点linux操作系统中的10条性能调优命令,一文搞懂Linux系统调优
  • 原文地址:https://www.cnblogs.com/stangray/p/1851155.html
Copyright © 2020-2023  润新知