利用HttpHandler 调用不同的Css文件

转载 2012年03月26日 10:09:34

我对HttpHandler的理解

HttpHandler 是Framework中提供用于对Http请求的编程。而实现这一操作的主要接口是IHttpHandler和IHttpModule.

利用HttpHandler 实现在不同的语言下调用不同的Css文件

创建HttpHandlerCss.cs 文件

View Code
   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

相关文章推荐

用js实现根据不同的分辨率和浏览器调用不同的css文件

方法一:(根据ID设定) JavaScript"> if (screen.width == "800") { document.getElementById("MyCS...

根据不同浏览器加载不同css文件

通过判断浏览器类型而加载不同的css样式   如果你读了这篇文章,你会觉得IE浏览器很是让人头疼。但是如果你是一名优秀的前端开发人员的话,你必须得解决这个问题,我...

利用gulp工具来压缩css文件

压缩 css 代码可降低 css 文件大小,提高页面打开速度,因此也可以提高网页的性能,接下来我们来看一下,我们怎么利用gulp工具来进行css文件的压缩。 1)首先我们先安装gulp这个工具,安装这...

org css文件

  • 2012年08月02日 00:06
  • 37KB
  • 下载

asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度

介绍 使用许多小得JS、CSS文件代替一个庞大的JS或CSS文件来让代码获得更好的可维护性,这是一个很好的实践。但这样做反过来却损失了网站的性能。虽然你应该将你的Javascript代码写在小文件中...

Js Css文件压缩工具源码

  • 2012年05月08日 08:54
  • 300KB
  • 下载

ngTable js和css文件

  • 2016年12月23日 08:03
  • 20KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用HttpHandler 调用不同的Css文件
举报原因:
原因补充:

(最多只允许输入30个字)