我在Default.aspx页面中引用一个js文件L2Master.js
然后想在Global.asax的Application_BeginRequest事件,通过Request.RawUrl获取
引用该js文件的路径,重定向到一个经过gzip压缩后的js文件上,以便减少流量
现在的问题是,我根本不能得到引用js文件时产生的url难道浏览器向服务器请求js文件不产生url?
ps.我使用vs2005自带的开发服务器没有这个问题请问各路大虾这是怎么回事呢?
thx

解决方案 »

  1.   

    是这样的,我本来想在服务器端实时压缩js脚本文件,但考虑到增加服务器开销,所以事先用gzip工具,将js压缩成.gz文件存放在服务器中,当浏览器向服务器请求js脚本文件时,重定向到相应的.gz文件,将该文件发送到浏览器。
    比如在default.aspx中有<script type="text/javascript" src="Document/L2Master.js"/>这样的引用
    那么在请求该脚本的时候,我打算将它重定向到L2Master.js.gz文件(该文件已经存在服务中),将其发送到浏览器。我在Gloabl.asax中添加如下代码:
    protected void Application_BeginRequest(Object sender, EventArgs e)
    {
        if(Context.Request.RawUrl.EndsWith(".js"))
        {
            String str1 = Context.Request.RawUrl + ".gz";
            Context.RewritePath(str1);
            Context.Response.AppendHeader("Content-Encoding", "gzip");
            Context.Response.ContentType = "text/javascript";
            Context.Response.TransmitFile(str1);
            Context.Response.End();
        }
    }
    问题是标有红色的那行代码一直为false,也就是说没有产生请求js文件的url,而这个问题在vs2005的开发服务器上是不存在的。
      

  2.   

    知道为什么了。应该在iis中配置,将*.js 映射到asp_net.dll。这样对脚本文件的请求才会进入到httpmodule中,o(∩_∩)o...哈哈。