数据缓存依赖、图片防盗链 url重写
2013-12-13 17:17
253 查看
数据库缓存依赖
1、数据库缓存依赖
-S服务器名称 -E集成身份验证 -ed启动 -d数据库名称 -et指定缓冲依赖的表名 -t表名
在vs2010的命令提示符中运行(切换到aspnet_regsql.exe所在的目录)
aspnet_regsql.exe -S 127.0.0.1 -E -ed -d myphotos -et -t photos
缓存依赖禁用该数据库
aspnet_regsql -S . -E -dd -d myphotos
2、依赖于数据库的web.config配置
<system.web>
<caching>
<sqlCacheDependency enabled="true">
<databases>
<add name="myphotos" connectionStringName="connectionString" pollTime="500"/>
</databases>
</sqlCacheDependency>
</caching>
3、 System.Web.Caching.SqlCacheDependency dep = new System.Web.Caching.SqlCacheDependency("myphotos", "photos");
Cache.Insert("list", list, dep);
进程外session
StateServer 对象必须可序列化
1.开始 ASP.NET 状态服务 services.msc
2.配置webconfig
<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424"></sessionState>
//
3.如果是远程的stateserver配置注册表 regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection
设置成1
图片防止盗链
void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.RawUrl.Contains("images/"))
{
if (Request.UrlReferrer == null || !IsSameDomain(Request.UrlReferrer, Request.Url))
{
////
Response.ContentType = "image/jpeg";
string path = Request.MapPath("~/daolian.jpg");
Response.WriteFile(path);
//结束请求
Response.End();
}
}
}
//判断两个域名是否相等
bool IsSameDomain(Uri u1,Uri u2)
{
return Uri.Compare(u1, u2, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.CurrentCultureIgnoreCase) == 0 ? true : false;
}
url重写
一、原理
void Application_BeginRequest(object sender, EventArgs e)
{
//url重写
HttpApplication app = sender as HttpApplication;
string url = app.Request.RawUrl;
Regex r = new Regex("/(\\d+)/details\\.htm",RegexOptions.IgnoreCase);
Match m = r.Match(url);
if (m.Success)
{
string id = m.Groups[1].Value;
app.Context.RewritePath("~/PhotoDetails.aspx?id=" + id);
}
}
二、urlRewriter
1、在<configSections>节点加入
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
2、在</configSections>之后加入
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/(\d{4})/(\d{2})/Default\.aspx</LookFor>
<SendTo>~/Default.aspx?ID=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
3、<httpHandlers>中加入
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
或者 <httpModules>加入
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
1、数据库缓存依赖
-S服务器名称 -E集成身份验证 -ed启动 -d数据库名称 -et指定缓冲依赖的表名 -t表名
在vs2010的命令提示符中运行(切换到aspnet_regsql.exe所在的目录)
aspnet_regsql.exe -S 127.0.0.1 -E -ed -d myphotos -et -t photos
缓存依赖禁用该数据库
aspnet_regsql -S . -E -dd -d myphotos
2、依赖于数据库的web.config配置
<system.web>
<caching>
<sqlCacheDependency enabled="true">
<databases>
<add name="myphotos" connectionStringName="connectionString" pollTime="500"/>
</databases>
</sqlCacheDependency>
</caching>
3、 System.Web.Caching.SqlCacheDependency dep = new System.Web.Caching.SqlCacheDependency("myphotos", "photos");
Cache.Insert("list", list, dep);
进程外session
StateServer 对象必须可序列化
1.开始 ASP.NET 状态服务 services.msc
2.配置webconfig
<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424"></sessionState>
//
3.如果是远程的stateserver配置注册表 regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection
设置成1
图片防止盗链
void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.RawUrl.Contains("images/"))
{
if (Request.UrlReferrer == null || !IsSameDomain(Request.UrlReferrer, Request.Url))
{
////
Response.ContentType = "image/jpeg";
string path = Request.MapPath("~/daolian.jpg");
Response.WriteFile(path);
//结束请求
Response.End();
}
}
}
//判断两个域名是否相等
bool IsSameDomain(Uri u1,Uri u2)
{
return Uri.Compare(u1, u2, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.CurrentCultureIgnoreCase) == 0 ? true : false;
}
url重写
一、原理
void Application_BeginRequest(object sender, EventArgs e)
{
//url重写
HttpApplication app = sender as HttpApplication;
string url = app.Request.RawUrl;
Regex r = new Regex("/(\\d+)/details\\.htm",RegexOptions.IgnoreCase);
Match m = r.Match(url);
if (m.Success)
{
string id = m.Groups[1].Value;
app.Context.RewritePath("~/PhotoDetails.aspx?id=" + id);
}
}
二、urlRewriter
1、在<configSections>节点加入
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
2、在</configSections>之后加入
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/(\d{4})/(\d{2})/Default\.aspx</LookFor>
<SendTo>~/Default.aspx?ID=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
3、<httpHandlers>中加入
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
或者 <httpModules>加入
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
相关文章推荐
- SDWebimage 相同url缓存图片对比问题
- SQL数据缓存依赖 [SqlServer | Cache | SqlCacheDependency ]
- [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
- ViewPager无限轮播,加载网络数据,ImageLoader加载图片并缓存到SD卡上
- iOS基础8:自定义MyData/自定义SQLite用于网络判断,版本判断,图片缓存处理,下载或者上传的GET或POST请求,加密手段,.数据解析
- Android-Volley网络通信框架(二次封装数据请求和图片请求(包括处理请求队列和图片缓存))
- 图片防盗链 url重写(Nginx重写)
- ViewPager无限轮播,加载网络数据,ImageLoader加载图片并缓存到SD卡上
- Eclipse rcp/rap 开发经验总结(14) -rap 图片、数据缓存处理
- [转]使用基于轮询的SQL数据缓存依赖
- JavaWeb_Day10_学习笔记1_response(3、4、5、6、7、8、9)发送状态码、响应、重定向、定时刷新、禁用浏览器缓存、响应字节数据、快捷重定向方法、完成防盗链
- imagepick返回的asseturl获取图片数据
- 让UIImageView可以直接设置网络图片url,并且支持图片缓存
- 通过重写NSURLProtocol实现UIWebView的数据缓存
- [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
- 使用基于轮询的SQL数据缓存依赖
- 根据销量排序,获取商品的数据(价格,名称,url,商品图片)
- SQL数据缓存依赖 [SqlServer | Cache | SqlCacheDependency ]
- Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
- SQL数据缓存依赖 [SqlServer | Cache | SqlCacheDependency ] -- [转]