网页优化系列一:合并文件请求(asp.net版)

简介:

最近因公司需要对网站的优化处理学习了一番,现在借本系列博文与大家分享一下自己的学习成果,有纰漏处请大家多多指正。

  首先推荐一篇十分全面的网页优化文章:http://developer.yahoo.com/performance/rules.html

  好了,要正式开始了!

  一、合并文件请求(以css文件为例说明,js文件一样处理)

  我们常会将网页上的css存放在css文件中,然后引入到网页中,那么加载网页时浏览器会针对每一个文件的引用生成请求。请求的建立会耗费一定的带宽资源和时间并占用一定的服务器资源,如果请求数目过多,网页的加载速度会变慢。有一种方法是将多个css文件合并成一个文件,这样不仅容易发生样式间的冲突、后期维护困难,还有会造成加载无用样式数据的可能。而以下方法通过一个中间层处理css文件的请求,达到合并文件请求又不用合并css文件的作用。(监测工具:HttpWatch)

  未优化时:

default.aspx

复制代码
 1 <html>
2 <head>
3 <link rel="stylesheet" type="text/css" href="styles/style1.css"/>
4 <link rel="stylesheet" type="text/css" href="styles/style2.css"/>
5 </head>
6 <body>
7 <div class="div1"></div>
8 <div class="div2"></div>
9 </body>
10 </html>
复制代码

style1.css

复制代码
1 .div1{
2 width:500px;
3 height:100px;
4 border:solid 1px red;
5 background:url(../images/back.gif)
6 }
复制代码

style2.css

复制代码
1 .div2{
2 width:600px;
3 height:100px;
4 border:solid 1px black;
5 background-color:red
6 }
复制代码

页面首次加载结果:

很明显,发出了两个请求来获取css文件。下面用一个请求来获取两个css文件。

优化后:

defalut.aspx

复制代码
1 <html>
2 <head>
3 <link rel="stylesheet" type="text/css" href="CssRequestHandler.aspx?p1=styles/style1.css&p2=styles/style2.css"/>
4 </head>
5 <body>
6 <div class="div1"></div>
7 <div class="div2"></div>
8 </body>
9 </html>
复制代码
其中CssRequestHandler就是处理css请求的中间层,将要请求的css文件路径以参数的形式发送到服务器端。注意点:此处的参数名必须不同,如果使用相同的参数名的话中间层的处理代码会有一点不同。
CssRequestHandler.ashx
 
 
复制代码
 1  public void ProcessRequest (HttpContext context) {
2 context.Response.ContentType = "text/css";
3 int pCount = context.Request.QueryString.Count;//参数个数
4 string path = string.Empty;//文件路径
5
6 for(int i=0; i<pCount; ++i)
7 {
8 path = context.Request.PathMap(context.Request.ApplicationPah+"/"+context.Request.QueryString[i]);
9 TextReader tr = StreamReader(path);
10 context.Response.Write(tr.ReadToEnd()+"\n");
11 tr.Close();
12 tr.Dispose();
13 }
14 }
复制代码

style1.css

复制代码
1 .div1{
2 width:500px;
3 height:100px;
4 border:solid 1px red;
5 background:url(images/back.gif)
6 }
复制代码

注意点:background属性中图片url跟之前的不同,因为用该方式合并请求获取的css文件犹如把css样式嵌套到html文件中,所以相对路径要以html页面文件的相对路径为准。

style2.css

复制代码
1 .div2{
2 width:600px;
3 height:100px;
4 border:solid 1px black;
5 background-color:red
6 }
复制代码

页面首次加载结果:

与未优化对比,发送和接收的数据量都减少了。但Time却增大了,推断是因为图片要等css样式解释时才发出请求,而中间层处理占用一定的时间,延后了图片的请求,所以完成最后一个图片的请求也有所延迟。尝试不加载图片:

优化后:

未优化:

可发现无论从发送和接收的数据量还是页面请求的时间上看,优化后的页面加载速度都有所提升。

 

下一篇:网页优化系列二:使用Cache缓存静态文件、图片(asp.net版)

如果您觉得本文的内容有趣就扫一下吧!捐赠互勉!


本文转自^_^肥仔John博客园博客,原文链接:http://www.cnblogs.com/fsjohnhuang/archive/2011/11/03/2235080.html,如需转载请自行联系原作者

相关文章
|
4月前
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
346 3
|
6月前
|
Go
在golang中发起http请求以获取访问域名的ip地址实例(使用net, httptrace库)
这只是追踪我们的行程的简单方法,不过希望你跟着探险家的脚步,即使是在互联网的隧道中,也可以找到你想去的地方。接下来就是你的探险之旅了,祝你好运!
333 26
|
5月前
|
存储 缓存
.NET 6中Startup.cs文件注入本地缓存策略与服务生命周期管理实践:AddTransient, AddScoped, AddSingleton。
记住,选择正确的服务生命周期并妥善管理它们是至关重要的,因为它们直接影响你的应用程序的性能和行为。就像一个成功的建筑工地,工具箱如果整理得当,工具选择和使用得当,工地的整体效率将会大大提高。
226 0
|
开发框架 缓存 .NET
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
500 0
|
11月前
|
Linux C# Windows
.NET使用MiniWord高效生成Word文件
.NET使用MiniWord高效生成Word文件
375 12
|
11月前
|
JSON 数据格式
.net HTTP请求类封装
`HttpRequestHelper` 是一个用于简化 HTTP 请求的辅助类,支持发送 GET 和 POST 请求。它使用 `HttpClient` 发起请求,并通过 `Newtonsoft.Json` 处理 JSON 数据。示例展示了如何使用该类发送请求并处理响应。注意事项包括:简单的错误处理、需安装 `Newtonsoft.Json` 依赖,以及建议重用 `HttpClient` 实例以优化性能。
290 2
Visual Studio 快速分析 .NET Dump 文件
【11月更文挑战第10天】.NET Dump 文件是在 .NET 应用程序崩溃或出现问题时生成的,记录了应用程序的状态,包括内存对象、线程栈和模块信息。通过分析这些文件,开发人员可以定位和解决内存泄漏、死锁等问题。在 Visual Studio 中,可以通过调试工具、内存分析工具和符号加载等功能来详细分析 Dump 文件。此外,还可以使用第三方工具如 WinDbg 进行更深入的分析。
679 1
|
数据采集 JSON API
异步方法与HTTP请求:.NET中提高响应速度的实用技巧
本文探讨了在.NET环境下,如何通过异步方法和HTTP请求提高Web爬虫的响应速度和数据抓取效率。介绍了使用HttpClient结合async和await关键字实现异步HTTP请求,避免阻塞主线程,并通过设置代理IP、user-agent和cookie来优化爬虫性能。提供了代码示例,演示了如何集成这些技术以绕过目标网站的反爬机制,实现高效的数据抓取。最后,通过实例展示了如何应用这些技术获取API的JSON数据,强调了这些方法在提升爬虫性能和可靠性方面的重要性。
268 1
异步方法与HTTP请求:.NET中提高响应速度的实用技巧
|
存储 开发框架 .NET
Windows IIS中asp的global.asa全局配置文件使用说明
Windows IIS中asp的global.asa全局配置文件使用说明
270 1
.NET 压缩/解压文件
【9月更文挑战第5天】在 .NET 中,可利用 `System.IO.Compression` 命名空间进行文件的压缩与解压。首先引入相关命名空间,然后通过 GZipStream 类实现具体的压缩或解压功能。下面提供了压缩与解压文件的方法示例及调用方式,便于用户快速上手操作。
180 6