前端开发——页面缓存问题
前言 |
我们平时在浏览器浏览一些网址,多多少少都会涉及到缓存的问题,有时候觉得缓存挺烦的。但是在开发过程中,利用好缓存,可让服务器或者数据库减少很大的压力。下面我来用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("数据库名称", "表名"));
在这里插入代码片
总结 |
虽然只领略到了皮毛,就知道缓存这个东西很厉害,利用好这个东西,能减少服务器不下的压力!