1 数据库缓存依赖
2 1、数据库缓存依赖(在数据库中创建一个缓存依赖项)
3 -S服务器名称 -E集成身份验证 -ed启动 -d数据库名称 -et指定缓冲依赖的表名 -t表名
4 在vs2010的命令提示符中运行(切换到aspnet_regsql.exe所在的目录)
5 aspnet_regsql -S . -E() -ed -d bjhksj -et -t HKSJ_USERS
6
7 aspnet_regiis
8
9 缓存依赖禁用该数据库
10 aspnet_regsql -S . -E -dd -d bjhksj
11
12 2、依赖于数据库的web.config配置
13 <system.web>
14 <caching>
15 <sqlCacheDependency enabled="true">
16 <databases>
17 <add name="HeimaRegulation(数据库的名称)" connectionStringName="connectionString(连接字符串名称,要在appSetting中添加)" pollTime="500(单位毫秒)"/>
18 </databases>
19 </sqlCacheDependency>
20 </caching>
21 要在配置文件中增加一个上面的连接字符串。并且要指定数据库和登录名密码。
22 <add name="connectionString" connectionString="server=.;database=11;uid=sa;pwd=123" >
23
24 3、 System.Web.Caching.SqlCacheDependency dep = new System.Web.Caching.SqlCacheDependency("HeimaRegulation", "Branch");
25 Cache.Insert("list", list, dep, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration);
26
27
28
29
30 缓存使用场景第一个:访问量大,变化比较少 典型场景:京东菜单项变化比较少,访问又特别大
31 页面缓存
32 控件缓存:数据源缓存
33 自定义缓存:
34 普通缓存、过期时间缓存、滑动过期时间缓存、依赖文件缓存、依赖数据库缓存。
35
36 使用场景:
37
38
39
40
41 第二: 微软的Session有什么缺陷?微软怎么解决?
42 //放到一个状态服务里面:一个进程内存里面。
43 进程外session
44 StateServer 对象必须可序列化
45 1.开始 ASP.NET 状态服务:cmd里面命令:services.msc
46 2.配置webconfig
47 <sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424">
48 </sessionState>
49 3.如果是远程的stateserver配置注册表
50 命令:cmd → regedit.exe HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection
51 设置成1
52 如果是1:那么代表其他机器也可以访问当前的状态服务。如果是0,那么只能我自己访问。
53 SQLServer
54
55
56
57 //放到数据里面:
58 aspnet_regsql.exe -S 127.0.0.1 -U sa -P 123 -ssadd -sstype c -d SessionTest
59
60 1. <sessionState mode="SQLServer" allowCustomSqlDatabase="true" sqlConnectionString="Data Source=.;Initial Catalog=SessionTest;uid=sa;pwd=123"></sessionState>
61 2.对象必须可序列化
62
63
64
65
66 图片防止盗链
67
68 void Application_BeginRequest(object sender, EventArgs e)
69 {
70 if (Request.RawUrl.Contains("images/"))
71 {
72 if (Request.UrlReferrer == null || !IsSameDomain(Request.UrlReferrer, Request.Url))
73 {
74 ////
75 Response.ContentType = "image/jpeg";
76 string path = Request.MapPath("~/daolian.jpg");
77 Response.WriteFile(path);
78 //结束请求
79 Response.End();
80 }
81 }
82 }
83 //判断两个域名是否相等
84 bool IsSameDomain(Uri u1,Uri u2)
85 {
86 return Uri.Compare(u1, u2, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.CurrentCultureIgnoreCase) == 0 ? true : false;
87 }
88
89
90
91
92
93 权限判断
94 public void Init(HttpApplication context)
95 {
96 //获得状态 AcquireRequestState
97 context.AcquireRequestState += new EventHandler(context_AcquireRequestState);
98 }
99
100 void context_AcquireRequestState(object sender, EventArgs e)
101 {
102 //验证权限
103 HttpApplication app = sender as HttpApplication;
104 if (app != null)
105 {
106 if (!app.Request.RawUrl.ToLower().Contains("login.aspx"))
107 {
108 if (app.Session["user"] == null)
109 {
110 app.Response.Write("<script>alert('没有权限');window.location.href='Login.aspx?returnurl="+app.Request.RawUrl+"'</script>");
111 app.Response.End();
112 }
113 }
114 }
115 }
116
117
118
119
120
121
122 details.aspx?id=1
123
124 /details-01.htm
125
126
127
128
129 url重写
130
131
132 一、原理
133 void Application_BeginRequest(object sender, EventArgs e)
134 {
135 //url重写
136 HttpApplication app = sender as HttpApplication;
137 string url = app.Request.RawUrl;
138 Regex r = new Regex("/(\\d+)/details\\.htm",RegexOptions.IgnoreCase);
139 Match m = r.Match(url);
140 if (m.Success)
141 {
142 string id = m.Groups[1].Value;
143 app.Context.RewritePath("~/PhotoDetails.aspx?id=" + id);
144 }
145 }
146
147 二、urlRewriter
148 1、在<configSections>节点加入
149 <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
150 2、在</configSections>之后加入
151
152 <RewriterConfig>
153 <Rules>
154 <RewriterRule>
155 <LookFor>~/(\d{4})/(\d{2})/Default\.aspx</LookFor>
156 <SendTo>~/Default.aspx?ID=$1</SendTo>
157 </RewriterRule>
158 </Rules>
159 </RewriterConfig>
160 3、<httpHandlers>中加入
161 <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />