zoukankan      html  css  js  c++  java
  • 浏览器缓存

    缓存是高性能网站的基石,可以达到的目的:

    减少往返
    将内容移到离客户端更近的地方
    避免为重复的内容,花费再次请求的时间

    在所有层缓存,一般应用有以下层次:

    1、浏览器
    2、本地代理-isp代理
    3、web服务器中:
        http.sys
        iis输出缓存
        ASP.NET输出缓存
        ASP.NET对象缓存、ASP.NET请求缓存
    4、SQLSERVER数据库

    我们尽可能合理地在每一层中进行缓存

    浏览器缓存

    减少服务器之间的往返,缩短相应时间.
    缓存静态内容:在http头信息中,cache-control属性表示缓存信息。
    设置cache-control属性,可以在IIS管理器中设置cache-control的值,还可以在Web.Config文件中配置:

    <system.webserver>
        <staticContent>
            <clientCache cacheControlAge="usage" cacheControlMaxage="365.00:00:00"/>
        </staticContent>
    </system.webserver>

    在后面还可以为特定的静态资源,设置更短的时间。

    关闭游览器缓存

    可以为特定的静态资源关闭浏览器缓存,可以在IIS中设置,也可以在Web.Config文件中配置:

    <location path="image.jpg">
        <system.webserver>
            <staticContent>
                <clientCache cacheControlMode="DisableCache"/>
            </staticContent>
        </system.webserver>
    </location>

    缓存动态内容

    在ASPX页面中使用声明方式实现缓存,设置过期时间:
    <%@outputcache Duration="86400" Location="client" VaryByParam="None"%>
    这句话在运行时中会生成Http头,让浏览器缓存86400秒(1天),还必须设置VaryByParam="None"属性,表明该页面的多个版本不需要独立缓存。
    还可以通过编程方式设置,在后置代码或者httpModule中:

    void SetCache()
    {
        this.Response.Cache.SetExpires(DateTime.Now.AddDays(1));//可以忽略
        TimeSpane ds = new TimeSpane(1,0,0,0);
        this.Response.Cache.SetMaxage(ds);//关键代码
    }

    使用缓存配置
    在Web.Config文件中配置一个缓存,然后可以在ASPX里面outputcache中使用:

    <system.web>
        <caching>
            <outputcachesetting>
                <outputcacheprofiles>
                    <add name="cacheDay" duration="86400" location="client" varyByParam="none"/>
                </outputcacheprofiles>
            </outputcachesetting>
        </caching>
    </system.web>

    在ASPX页面中:
    <%@outputcache cacheprofile="cacheDay"%>
    也能达到一样的目的。
    关闭缓存
    应该只在数据必须时刻保持最新的情况下,关闭缓存。
    关闭缓存只能在编程的时候实现:

    void SetNoCache()
    {
        this.Response.Cache.SetCacheablity(HttpCacheablity.Nocache);//关键代码
    }

  • 相关阅读:
    Echarts实现区级行政区划地图
    webpack4.x开发环境配置
    说说说vue.js中的组
    原生JS实现购物车功能详解
    面向对象的一些重要的基本概念
    Lucene教程
    开启事务时mybatis返回主键id
    生成二维码的方法,基于zxing
    mysql判断一条记录是否存在,如果存在,则更新此语句,如果不存在,则插入
    一:验证微信的Token
  • 原文地址:https://www.cnblogs.com/lmfeng/p/2789096.html
Copyright © 2011-2022 走看看