En C#, ¿a qué espacio de nombres pertenece CommonModule?
//?1. Utilice el módulo HTTP para controlar el ciclo de vida de la página.
//// 2. Personalice Response.Filter para obtener el flujo de salida y generar contenido estático (caché de disco) para páginas dinámicas.
// 3. Compresión GZIP de página.
// 4. OutputCache: caché de página de salida mediante programación.
///5. Elimina la cadena en blanco de la página. (Similar a Google)
//6. Elimina ViewState por completo. Elimine el NamingContainer basura generado por el control del servidor. Utilice tareas programadas para generar páginas a tiempo. (Este artículo no incluye la implementación de este enfoque)
//9.JS, compresión CSS, fusión, almacenamiento en caché y almacenamiento en caché de imágenes. (Debido a la extensión del artículo, este artículo no incluye la implementación de este enfoque)
//10. (Este artículo no incluye la implementación de la novena práctica)
//?
public?class?CommonModule?:?IHttpModule
{
public?void?Init(HttpApplication?application)
{
aplicación.BeginRequest?
privado.void.Application_BeginRequest( objeto.remitente, EventArgs.e)
{
var.context.HttpContext.Current;
var.request.context.Request;
var.url.request.RawUrl;?
var?response?=?context.Response;
var?path?=?CommonModule.GetPath(url);
var?file?=?new?FileInfo(ruta);
/?¿Usar compresión de página?
ResponseCompressionType?compressionType?=?this.GetCompressionMode(request);
if?(compressionType!=?ResponseCompressionType.None)
{
response.AppendHeader("Content-Encoding",?compressionType.ToString().ToLower());
if?if (tipo de compresión==?ResponseCompressionType.GZip)
{
respuesta.Filter?Filter,?CompressionMode.Compress);
}
}
if?(DateTime. Now.Subtract(file.LastWriteTime).TotalMinutes?5)
{
Respuesta.
TransmitFile(ruta);
if?(DateTime.Now.Subtract(file.LastWriteTime).TotalMinutes?5)
{
respuesta.ruta );
/?{
var?stream?=?file.OpenWrite();
respuesta.Filter?=?new?CommonFilter(respuesta. Filtro,?stream);
}
catch(Exception)
{
/Log.Insert("");?
}
}
¿privado?ResponseCompressionType?GetCompressionMode(HttpRequest?request)
{
cadena? AcceptEncoding?=?request.Headers["Accept-Encoding"];
if?IsNullOrEmpty(acceptEncoding))
return?ResponseCompressionType.None;
acceptEncoding?=?acceptEncoding.ToUpperInvariant();
if?(acceptEncoding.Contains("GZIP"))
return?ResponseCompressionType.GZip;
else?if?(acceptEncoding.Contains("DEFLATE"))
return?ResponseCompressionType.Deflate
else
return?ResponseCompressionType.None;
}
¿privado?{
público?estático?cadena?GetPath(cadena?url)
{
var?hash?=?Hash(url);
cadena?fold?=?HttpContext.Current.Server.MapPath("~/Temp/");
retorno ?hash);
}
público?static?string?Hash(string?url)
{
url ?=? url.ToUpperInvariant();
var?md5?ComputeHash(Encoding.ASCII.GetBytes(url));
var?s?=?new?StringBuilder(); p> p>
foreach(var?b?in?bs)
{
s.Append(b .ToString("x2").ToLower()); p>
}
¿regresar?