zoukankan      html  css  js  c++  java
  • 自定义浏览器缓存网站时间,节省网站带宽

    原理:

      很简单,服务器第一次向浏览器输出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);
            }
    
    
  • 相关阅读:
    配送单MYSQL ,一点都不机智
    强哥新周报SQL
    SQL 交叉连接与内连接
    pycharm git 提交使用情况
    MYSQL freedata 外联接
    SQL 添加字段
    邮件发送方法代码时
    调通有赞接口数据,翻页获取
    superset dashboard 设置自动刷新
    python 语法错误记录
  • 原文地址:https://www.cnblogs.com/stangray/p/1851155.html
Copyright © 2011-2022 走看看