前端开发——页面缓存问题

前言

我们平时在浏览器浏览一些网址,多多少少都会涉及到缓存的问题,有时候觉得缓存挺烦的。但是在开发过程中,利用好缓存,可让服务器或者数据库减少很大的压力。下面我来用C#举几种缓存类型的例子!

为整个页面设置缓存

在aspx文件开始位置加上这样一句代码

<%@ OutputCache Duration="15" VaryByParam="*" %>

它表示网页没有任何改变的情况下缓存15秒,这种情况一般为请求量非常大的网站。VaryByParam表示对相同月面,不同的id参数进行单独缓存。如果设置为 * 表示所有。

绝对过期时间的缓存

绝对过期时间缓存,在一定的时间内是有缓存的,一旦过时,就会清除缓存。当然时间因情况而定

//设置过期时间的缓存
                Cache.Insert("key", DateTime.Now.ToString(), null, DateTime.Now.AddSeconds(时间,单位秒), TimeSpan.Zero);

设置滑动过期时间缓存

滑动过期时间,表示在一定的时间段不对网站做操作,就清除缓存,如果一直有操作则一直存在缓存。

//设置滑动过期时间
                Cache.Insert("key", DateTime.Now.ToString(), null, DateTime.MaxValue, new TimeSpan(0, 0, 5));

设置依赖项缓存

依赖某个文件,如果文件发生变化,则清除缓存,如果文件一直不变,缓存一直存在。

////设置依赖项缓存
                string file = Request.MapPath("ceshi.txt");
                Cache.Insert("key", DateTime.Now.ToString(), new System.Web.Caching.CacheDependency(file));

依赖数据库缓存

依赖于一个数据库中的一个表,如果该表发生变换,缓存也就清除。
具体的设置步骤如下:

  • 打开ASP.NET State Service服务
    在这里插入图片描述

  • 在CMD中选择到VS的安装路径下,输入指令
    aspnet_regsql -S . -E -ed -d Charge(数据库名称) -et -t User_Info(表名称)

  • 出现下图:
    在这里插入图片描述

  • 在配置文件中<system.web>节点下添加配置

<caching>
      <sqlCacheDependency enabled="true">
        <databases>
          <add name="Charge" connectionStringName="connectionString" pollTime="500"/>
        </databases>
      </sqlCacheDependency>
    </caching>
  • 连接数据库的字符串
<connectionStrings>
    <add name="connectionString" connectionString="server=.;uid=sa;pwd=123456;database=Charge"/>
</connectionStrings>
  • 编写C#代码
//依赖数据库的缓存
              // Cache.Insert("key",DateTime.Now.ToString(),new SqlCacheDependency("数据库名称", "表名"));
在这里插入代码片

总结

虽然只领略到了皮毛,就知道缓存这个东西很厉害,利用好这个东西,能减少服务器不下的压力!