作者: OneAPM
查看: 3587|回复: 0

[教程] 【性能优化】ASP.NET MVC 应用提速的十种方法

[复制链接]
OneAPM 发表于 2016-5-5 11:45:56 | 显示全部楼层 |阅读模式
查看: 3587|回复: 0
说明:
主要介绍为 ASP.NET MVC 应用提速的十种方法。由国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文。
每个人都想快速掌握最新消息。
我是说,人们恨不得预知第二天的头条。没有人喜欢等待。
排队等待,遇到红灯要等待,开个网页要等待,等等等。
理所当然,没有人喜欢等待网页慢吞吞地加载,尤其是在移动端访问网站时。其实,Web 开发者敏感的神经决定了我们等待与否。
现在,快速响应不仅是来自用户的要求,还是决定 Google 搜索排名的主要因素。除此之外,Google 还大力推行 Google AMP 计划,以使网站加载更加快速。
考虑到大多数网站都存在速度方面的问题,笔者想通过此文帮助 Microsoft 开发者优化他们的网站。
在本文中,笔者将介绍十种为 ASP.NET MVC 应用提速的方法。

1. 应用程序缓存
缓存一直都是优化应用时屡试不爽的最后绝招。只要使用得当,缓存绝对可以有效加速应用。
在进行数据库调用以检索记录时,正是实现应用程序缓存的最佳时机。
譬如说,你搭建了一个博客。当访客请求某一篇博文时,你将其从数据库中检索出来,保存在缓存中。当下一个访客通过 ID 请求同一篇博文时,应用程序会首先根据 ID 在缓存中寻找博文,如果找到,就将之返回给访客,而无需访问数据库。
这节省了数据库调用的高昂开支。

2. 优化图片
之前,笔者从未了解过图片在一篇博文中会占据多大比重。有时候,取决于文章内容的不同,图片可能会是一篇博文中最大的资源。
你应该压缩这些庞大的资源。图片越小,网页渲染的速度越快。
Image Optimizer(图片优化)插件是很有用的 Visual Studio 插件。选定你的所有图像,再选择无损(Lossless)或者有损(Lossy)图片优化模式,每张图片都会根据一定的比率压缩大小。
此外,如果你掌握了 Grunt 或 Gulp 之类的前端客户端工具,就可以在创建应用或者部署应用时自动实现图片优化。

3. 使用 Sprites
每个网站都有图片。图片几乎是必不可少的网站元素。
但是,如果你有很多小图片,该如何处理呢?假设有20张小图片,那就是20次图片检索请求,每张图片一次。
这时候,Sprites 就能派上用场啦。
Sprites 是由众多小图片集合而成的一张大图。浏览器可以直接请求这张大图,你再通过 CSS 技术抓取其中的小图片,并将其展示在网页的不同位置上。
我知道,很多开发者并不熟悉 CSS。因此,建议大家找点资料好好学习一下。CSS 真的非常有用。
此外,还有许多在线 sprite 生成器,可以协助这一过程。(Piskel, Sprite Cow, 或者谷歌搜索:“在线 Sprite 生成器”)

4. ETags
有些读者可能不知道 ETags 为何物。其实,ETags 是用于 Web 缓存验证的工具,允许有条件的客户端请求。
通过 ETags,浏览器可以判断某项资源是否被需要。如果不需要,浏览器就不会向 Web 服务器发送请求,从而最小化请求数量。
笔者甚至将 ETag ActionFilter 类列为最喜欢的 ActionFilter 类,因为 ETags 的确能最小化网站向 Web 服务器发送的请求数量。

5. 捆绑或最小化 JavaScript/CSS 代码
捆绑与最小化早已不是什么新鲜的概念了。
捆绑是指将所有 JavaScript 与 CSS 代码打包为一个 JavaScript 或 CSS 文件的过程。这与 Sprite 技术相似,不过处理的是 JavaScript 与 CSS 文件。捆绑可以减少针对单独 JavaScript 与 CSS 文件的请求,从而减少成本。
JavaScript 与 CSS 文件充满了空格,这些空格占用了不少的空间。最小化就是移除 JavaScript 或 CSS 文件里的大量空格的过程。
在 ASP.NET MVC 项目中, App_Start 文件夹下有一个 BundleConfig.cs 文件。你可以在该文件中定义 JavaScript 与 CSS 文件的捆绑或最小化设置。
延伸阅读:捆绑与最小化

6. 压缩
你发觉我们的套路了么?
实现压缩的方式有两种:一是通过 IIS 激活压缩,二是通过 ActionFilter 类。
压缩启用后,Web 服务器会将资源压缩成包,再传给客户端。后者会先解压缩,然后再展示内容。
这能有效提高资源传送的速度。
笔者还为此写了一个 CompressFilter 类。通过 Action 方法调用该类,就能实现对网页的压缩。

结论
本文介绍的绝大部分速度提升方法都需要特定的编程技巧。一旦掌握了这些技巧,你就能轻易实现高效快速的网站。
以上所有技术都应用在笔者的网站中。
你不信?
右键单击以查看本文源码。
回复 论坛版权

使用道具 举报

您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2020-1-26 07:44, Processed in 0.501849 second(s), 31 queries , Gzip On.

快速回复 返回顶部 返回列表