MVC Cache
Control缓存
[OutputCache(Duration = 10)]
public class ControlController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
ViewBag.CurrentTime = System.DateTime.Now;
return View();
}
public ActionResult Index1()
{
ViewBag.CurrentTime = System.DateTime.Now;
return View();
}
}
[OutputCache(Duration = 10)]
可以加在clss上 也可以说action上
缓存配置写入config
<system.web>
16 <!--配置缓存-->
17 <caching>
18 <outputCacheSettings>
19 <outputCacheProfiles>
20 <add name="TestConfigCache" duration="10"/>
21 </outputCacheProfiles>
22 </outputCacheSettings>
23 </caching>
24 <!--配置缓存-->
使用:
[OutputCache(CacheProfile = "TestConfigCache")]
参数
1)CacheProfile:缓存使用的配置文件的缓存名称。
2)Duration:缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的。
3)OutputCacheLocation:枚举类型,缓存的位置。当设置成None时,所有缓存将失效,默认为Any。
Any:页面被缓存在浏览器、代理服务器端和web服务器端;
Client:缓存在浏览器;
DownStream:页面被缓存在浏览器和任何的代理服务器端;
Server:页面被缓存在Web服务器端;
None:页面不缓存;
ServerAndClient:页面被缓存在浏览器和web服务器端;
4)VaryByParam:用于多个输出缓存的字符串列表,并以分号进行分隔。默认时,该字符串与GET方法传递的参数或与POST方法传递的变量相对应。当被设置为多个参数时,输出缓存将会为每个参数都准备一个与之相对应的文档版本。可能值包括none,*,以及任何有效的查询串或POST参数名称。
如果您不想要为不同的已缓存内容指定参数,可以将其设置为none。如果想要指定所有的已缓存内容参数,可以设置为*。
缓存依赖
<configuration>
8 <!--数据库连接字符串-->
9 <connectionStrings>
10 <add name="Conn" connectionString="server=localhost;database=wcfDemo;uid=sa;pwd=123456;" providerName="System.Data.SqlClient"/>
11 </connectionStrings>
12 <!--数据库连接字符串-->
13 <appSettings>
14 <add key="webpages:Version" value="2.0.0.0" />
15 <add key="webpages:Enabled" value="false" />
16 <add key="PreserveLoginUrl" value="true" />
17 <add key="ClientValidationEnabled" value="true" />
18 <add key="UnobtrusiveJavaScriptEnabled" value="true" />
19 </appSettings>
20 <system.web>
21 <!--配置缓存-->
22 <caching>
23 <sqlCacheDependency><!--缓存的数据库依赖节-->
24 <databases>
25 <add name="UserCacheDependency" connectionStringName="Conn" pollTime="500"/><!--Conn:数据库连接字符串的名称,name随便启名,缓存节会用到-->
26 </databases>
27 </sqlCacheDependency>
28 <outputCacheSettings>
29 <outputCacheProfiles>
30 <add name="SqlDependencyCache" duration="3600" sqlDependency="UserCacheDependency:user"/><!--UserCacheDependency:数据库依赖配置节的名称,user:数据库中需要监听的表名称-->
31 </outputCacheProfiles>
32 </outputCacheSettings>
33 </caching>
34 <!--配置缓存-->
35 <httpRuntime targetFramework="4.5" />
1)由于是缓存对数据库的依赖,此外必须包含connectionStrings的节。
2)<add name="UserCacheDependency" connectionStringName="Conn" pollTime="500"/>
connectionStringName:数据库连接字符串的名称
pollTime:监听数据库变化的周期,以毫秒为单位。即每500毫秒查看下数据库是否有变化。
3)<add name="SqlDependencyCache" duration="3600" sqlDependency="UserCacheDependency:user"/>
sqlDependency:数据依赖的节的名称+冒号+数据表名称(小写)。如果这个依赖会用到多个表,则用分号间隔开,如下所示UserCacheDependency:user;UserCacheDependency:user1
第三步:启用该数据库表的缓存依赖通知功能
打开vs命令工具行,输入:aspnet_regsql -S localhost -U sa -P 123456 -ed -d wcfDemo -et -t user
-S localhost:数据库地址
-U sa:数据库登录名
-P 123456:数据库登录密码
-d wcfDemo:数据库的名称
-t user:表名称(小写)
111