利用HttpHandler 调用不同的Css文件
来源:互联网 发布:简单拼图软件 编辑:程序博客网 时间:2024/05/14 05:04
利用HttpHandler 调用不同的Css文件
我对HttpHandler的理解
HttpHandler 是Framework中提供用于对Http请求的编程。而实现这一操作的主要接口是IHttpHandler和IHttpModule.
利用HttpHandler 实现在不同的语言下调用不同的Css文件
创建HttpHandlerCss.cs 文件
public class HttpHandlerCss : System.Web.IHttpHandler, IRequiresSessionState { public bool IsReusable { get { return true; } } public void ProcessRequest(System.Web.HttpContext context) { string File = context.Request.PhysicalPath; string Url = context.Request.RawUrl; HttpRequest req = context.Request; bool isnew = string.IsNullOrEmpty(context.Request.Headers["If-Modified-Since"]); DateTime cachedate = isnew ? DateTime.MinValue : DateTime.Parse(context.Request.Headers["If-Modified-Since"]).ToUniversalTime(); string strlan = req.Headers["Accept-Language"]; string[] lans = strlan.Split(','); string firstlan = lans[0]; int ipos = firstlan.IndexOf(';'); if (ipos != -1) { firstlan = firstlan.Substring(0, ipos).Trim(); } string filename; if (firstlan == "zh-CN" || firstlan == "zh") { filename = File; } else { filename = File.Replace("App_Themes", "App_ThemesOther"); } DateTime Lastmodified = new FileInfo(filename).LastWriteTimeUtc; if (Lastmodified <= cachedate) { context.Response.StatusCode = 304; } else { context.Response.ContentType = "text/css"; context.Response.AddHeader("Last-Modified", Lastmodified.ToString("r")); context.Response.TransmitFile(filename); } } }
由上面的代码可以看出,IHttpHandler要求实现一个方法和一个属性
ProcessRequest方法中应该放置我们处理请求的主要代码。
IsReusable属性,获取一个值,该值指示其他请求是否可以使用 IHttpHandler 实例,我把它设置成true。
通过 HttpRequest获得不同的语言,然后返回不同的Css 文件 。
通过上面的代码还可以看出我使用了Lastmodified
Lastmodified :标记此文件在服务期端最后被修改的时间,格式类似这样:Last-Modified: March, 12 May 2012 18:53:33 GMT,来判断客户端在第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头,询问该时间之后文件是否有被修改过。如果服务器端的资源没有变化,则自动返回 HTTP 304 状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。
TransmitFile
利用TransmitFile将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件。
对Web.config 进行配置
< system.web> <httpHandler> <add verb ="*" path ="*.css" type ="CryptoGateway.WebPages.HttpHandlerCss,CSSHttpHandler" validate="true"/></HttpHandler> </system.web>
源代码下载:http://files.cnblogs.com/changminglong/HttpHandlerCss.rar
- 利用HttpHandler 调用不同的Css文件
- 不同浏览器不同分辨率,调用不同的css文件
- js点击调用不同的css文件
- 根据分辨率不同,调用不同的CSS文件
- 根据分辨率不同调用不同的css文件
- 【转】根据分辨率不同调用不同的css文件
- 根据分辨率不同调用不同的css文件
- 根据分辨率不同,调用不同的css文件
- 根据分辨率不同调用不同的css文件
- JS判断不同分辨率调用不同的CSS样式文件
- js 根据屏幕大小调用不同的css文件
- js 根据屏幕大小调用不同的css文件
- 用js实现根据不同的分辨率和浏览器调用不同的css文件
- 用js实现根据不同的分辨率和浏览器调用不同的css文件
- 用js实现根据不同的分辨率和浏览器调用不同的css文件
- 用JS判断不同分辨率调用不同的CSS样式文件
- DIV+CSS教程:判断用户浏览器及分辨率调用不同的CSS样式文件
- IIS7/IIS6 HttpHandler 机制的不同
- java操作excel
- python进程杀除及子程序调用
- ibatis使用in查询
- 学车
- 网络字节序与主机字节序
- 利用HttpHandler 调用不同的Css文件
- mvc
- 如何从零开始开发一款嵌入式产品
- nginx pk apache 2.4全过程系列即将公布
- 深入理解HTTP Session
- 再学C++ Primer(9)-顺序容器
- SEO笔记——百度站长平台的全方位解答
- 经典SQL语句
- 如何在windows平台下的ActiveTcl中设置环境变量