ASP.NET Ê×Ò³ÐÔÄܵÄÊ®´ó×ö·¨
ASP.NET Ê×Ò³ÐÔÄܵÄÊ®´ó×ö·¨
ǰÑÔ
±¾ÎÄÊÇÎÒ¶ÔASP.NETÒ³ÃæÔØÈëËÙ¶ÈÌá¸ßµÄһЩ×ö·¨£¬ÕâЩ×ö·¨·ÖΪÒÔϲ¿·Ö£º
1.²ÉÓà HTTP Module ¿ØÖÆÒ³ÃæµÄÉúÃüÖÜÆÚ¡£
2.×Ô¶¨ÒåResponse.FilterµÃµ½Êä³öÁ÷streamÉú³É¶¯Ì¬Ò³ÃæµÄ¾²Ì¬ÄÚÈÝ(´ÅÅÌ»º´æ)¡£
3.Ò³ÃæGZIPѹËõ¡£
4.OutputCache ±à³Ì·½Ê½Êä³öÒ³Ãæ»º´æ¡£
5.ɾ³ýÒ³Ãæ¿Õ°××Ö·û´®¡££¨ÀàËÆGoogle£©
6.Íêȫɾ³ýViewState¡£
7.ɾ³ý·þÎñÆ÷¿Ø¼þÉú³ÉµÄÀ¬»øNamingContainer¡£
8.ʹÓüƻ®ÈÎÎñ°´Ê±Éú³ÉÒ³Ãæ¡££¨±¾ÎIJ»°üº¬¸Ã×ö·¨µÄʵÏÖ£©
9.JS£¬CSSѹËõ¡¢ºÏ²¢¡¢»º´æ£¬Í¼Æ¬»º´æ¡££¨ÏÞÓÚÎÄÕÂÆª·ù£¬±¾ÎIJ»°üº¬¸Ã×ö·¨µÄʵÏÖ£©
10.»º´æÆÆ»µ¡££¨²»°üº¬µÚ9×ö·¨µÄʵÏÖ£©
Õë¶ÔÉÏÊö×ö·¨£¬ÎÒÃÇÊ×ÏÈÐèÒªÒ»¸ö HTTP Ä£¿é£¬ËüÊÇÕû¸öÒ³ÃæÁ÷³ÌµÄÈë¿ÚºÍºËÐÄ¡£
Ò»¡¢×Ô¶¨ÒåResponse.FilterµÃµ½Êä³öÁ÷streamÉú³É¶¯Ì¬Ò³ÃæµÄ¾²Ì¬ÄÚÈÝ(´ÅÅÌ»º´æ)
ÈçϵĴúÂëÎÒÃÇ¿ÉÒÔ¿´³ö£¬ÎÒÃÇÒÔ request.RawUrl Ϊ»º´æ»ù´¡£¬ÒòΪËü¿ÉÒÔ°üº¬ÈÎÒâµÄQueryString±äÁ¿£¬È»ºóÎÒÃÇÓÃMD5¼ÓÃÜRawUrl µÃµ½·þÎñÆ÷±¾µØÎļþÃûµÄ±äÁ¿£¬ÔÙʵÀý»¯Ò»¸öFileInfo²Ù×÷¸ÃÎļþ£¬Èç¹ûÎļþ×îºóÒ»´ÎÉú³Éʱ¼äСÓÚ7Ì죬ÎÒÃǾÍʹÓÃ.Net2.0ÐÂÔöµÄTransmitFile·½·¨½«´æ´¢ÎļþµÄ¾²Ì¬ÄÚÈÝ·¢Ë͵½ä¯ÀÀÆ÷¡£Èç¹ûÎļþ²»´æÔÚ£¬ÎÒÃǾͲÙ×÷ response.Filter µÃµ½µÄ Stream ´«µÝ¸ø CommonFilter À࣬²¢ÀûÓÃFileStreamдÈë¶¯Ì¬Ò³ÃæµÄÄÚÈݵ½¾²Ì¬ÎļþÖС£
namespace ASPNET_CL.Code.HttpModules {
public class CommonModule : IHttpModule {
public void Init( HttpApplication application ) {
application.BeginRequest += Application_BeginRequest;
}
private void Application_BeginRequest( object sender, EventArgs e ) {
var context = HttpContext.Current;
var request = context.Request;
var url = request.RawUrl;
var response = context.Response;
var path = GetPath( url );
var file = new FileInfo( path );
if ( DateTime.Now.Subtract( file.LastWriteTime ).TotalDays < 7 ) {
response.TransmitFile( path );
response.End();
return;
}
try {
var stream = file.OpenWrite();
Ïà¹ØÎĵµ£º
URL ÖØÐ´ÊǽØÈ¡´«Èë Web ÇëÇó²¢×Ô¶¯½«ÇëÇóÖØ¶¨Ïòµ½ÆäËû URL µÄ¹ý³Ì¡£
±ÈÈçä¯ÀÀÆ÷·¢À´ÇëÇóhostname/101.aspx £¬·þÎñÆ÷×Ô¶¯½«Õâ¸öÇëÇóÖж¨ÏòΪhttp://hostname/list.aspx?id=101¡£
urlÖØÐ´µÄÓŵãÔÚÓÚ£º
Ëõ¶Ìurl£¬Òþ²ØÊµ¼Ê·¾¶Ìá¸ß°²È«ÐÔ
Ò×ÓÚÓû§¼ÇÒäºÍ¼ ......
//TransmitFileʵÏÖÏÂÔØ
protected void Button1_Click(object sender, EventArgs e)
{
/*
΢ÈíΪResponse¶ÔÏóÌṩÁËÒ»¸öÐµķ½·¨TransmitFileÀ´½â¾öʹÓÃRespo ......
asp.net¼òÌå×Öת·±Ìå×ÖµÄÀà¿â
Õâ¶«Î÷ËäÈ»¼òµ¥£¬µ«Ò²²»Ê§Îª¾µäµÄÀà¿â£¬¸öÈ˶øÑÔ£¬¾Í·Ç³£Ï²»¶Õâ¸öÀà¿â¡£
ÓÃÎÄ×ּǼÏÂÀ´°É£¬Áô¸ö¼ÇÄî°É
ÔÚvsÖУ¬ÓÐÒ»¸ö¾µäµÄMicrosoft.VisualBasic.dllµÄVBÀà¿â£¬¸ù¾Ý¹Ù·½µÄÃèÊö£º
ËüÄÜÌṩ¶ÔÐí¶à .NET Framework ÀàµÄ¼òµ¥Ö±¹ÛµÄ· ......
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="s ......