ASP.NET MVC 提高运行速度的几种性能优化方法

主要介绍ASP.NETMVC 应用提速的六种方法,因为没有人喜欢等待,所以介绍几种常用的优化方法。

大家可能会遇到排队等待,遇到红灯要等待,开个网页要等待,等等等。

理所当然,没有人喜欢等待网页慢吞吞地加载,尤其是在移动端访问网站时。其实,Web 开发者敏感的神经决定了我们等待与否。

现在,快速响应不仅是来自用户的要求,还是决定搜索引擎的速度。

考虑到大多数网站都存在速度方面的问题,在本文中将介绍六种为 ASP.NET MVC 应用提速的方法。

希望可以帮助到大家!!!

1. 应用程序缓存

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

延伸阅读:通过添加简单的缓存层以实现高效快速的网站

2. 优化图片

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

延伸阅读:Visual Studio 2015 图片优化插件

3. 使用 Sprites

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

延伸阅读:ASP.NET MVC:数据驱动 CSS Sprites

4. ETags

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

延伸阅读:我最喜欢的五个 ASP.NET MVC ActionFilters

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 方法调用该类,就能实现对网页的压缩。

结论

本文介绍的绝大部分速度提升方法都需要特定的编程技巧。一旦掌握了这些技巧,你就能轻易实现高效快速的网站。多积累,多实践才能做更好

时间: 2024-10-15 06:17:59

ASP.NET MVC 提高运行速度的几种性能优化方法的相关文章

ASP.NET中26种性能优化方法

系统类  Type类,Object类,String类, Arrary类,Console类, Exception类,GC类, MarshalByRefObject类, Math类. DateTime结构,Guid 结构, ICloneable接口,IComparable接口,IConvertible接口, IDisposable类, 集合类      ICollection接口,IComparer接口,IDictionary接口.IDictionaryEnumerator接口 ,IEnumerab

ASP.NET MVC 表单的几种提交方式

下面是总结一下在ASP.NET MVC中表单的几种提交方式. 1.Ajax提交表单 需要引用 <script type="text/javascript" src="/Scripts/jquery-1.7.2.min.js"></script>    <script src="/Scripts/jquery.validate.min.js" type="text/javascript">&l

ASP.NET MVC Code First 遇到的问题及解决方法

照抄大牛的Demo,自己信心满满地建好个各种项,结果死活不让通过,遇到了以下几个问题(大部分是自己作出来的...) 1.运行不起来,报错如下Error 26: SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) 各种百度都是不行,后来看了一下,WebConfig的连接字符串是新加而

在ASP.NET MVC实现购物车,尝试一种不同于平常的购物车显示方式

通常,我们看到的购物车是这样的: 虽然这种购物车显示方式被广泛运用,但我个人觉得不够直观.如果换成这样呢? 本篇的源码放在了:https://github.com/darrenji/ShoppingCartInMVC 以上购物车页能实现的效果包括:1.购物车明细:显示订购数量.总金额,清空购物车.2.购物车内产品:数量可调整,对应的小计和总计动态变化.点击移除按钮移除该产品.3.继续购物按钮:点击左下角的继续购物按钮,回到先前页.4.使用了Bootstrap, 页面元素自适应,页面宽度调小时,页

ASP.NET MVC下判断用户登录和授权的方法

日常开发的绝大多数系统中,都涉及到管理用户的登录和授权问题.登录功能(Authentication),针对于所有用户都开放:而授权(Authorization),则对于某种用户角色才开放. 在asp.net mvc中,微软虽然已经帮助开发者构建了ASP.NET Identity这样强大的验证授权框架,但是如果想定制更多的逻辑功能的话,还得自己动动手. 根据日常的开发经验,我总结了下面1种方法: 1 学习了很多人的代码后,发现在Controller里有一个OnActionExecuting方法,此

[转]在 ASP.NET MVC 4 中创建为移动设备优化的视图

原文链接 https://msdn.microsoft.com/zh-cn/magazine/dn296507.aspx 如果深入探讨有关编写移动设备网站的常识性考虑因素,会发现其中有一种内在矛盾. 一方面,客户在其编写应用程序和网站的方法中强烈要求(或乐于要求)移动优先. 另一方面,同一些人又经常称赞 CSS 媒体查询和流体布局. 我所发现的矛盾在于经常利用 CSS 媒体查询和流体布局并未在其他内容之前优先处理移动方面,它不是一种移动优先的方法. 在本文中,我将介绍如何使用服务器端逻辑为给定设

关于linux asp.net MVC网站中 httpHandlers配置无效的处理方法

近期有Jexus用户反映,在Linux ASP.NET MVC网站的Web.config中添加 httpHandlers 配置用于处理自定义类型,但是在运行中并没有产生预期的效果,服务器返回了404(找不到网页)错误.经我亲自测试,在WebForm网站中,httpHandlers节点的配置是有效的,而在MVC中的确无效. 造成httpHandlers无效的原因我并没有时间去深究,为了能及时解决这个问题,我把注意力放到了Global.asax文件的Application_BeginRequest方

ASP.NET MVC 如何在一个同步方法(非async)方法中等待async方法

问题 首先,在ASP.NET MVC 环境下对async返回的Task执行Wait()会导致线程死锁.例: public ActionResult Asv2() { //dead lock var task = AssignValue2(); task.Wait(); return Content(_container); } private void Assign() { _container = "Hello World"; } public async Task AssignVa

提高应用程序的总体性能七方法

在本文中,我们将详细地描述怎样通过调整servlet和JSP页面,来提高应用程序的总体性能.本文的目的是通过对servlet和JSP的一些调优技术来极大地提高你的应用程序的性能,并因此提升整个J2EE应用的性能.通过这些调优技术,你可以发现其实并不是某种技术平台(比如J2EE和.NET之争)决定了你的应用程序的性能,重要是你要对这种平台有一个较为深入的了解,这样你才能从根本上对自己的应用程序做一个优化. 想学习更多关于java的知识,可以点击<Java EE软件工程师>进行学习. 方法一:在s