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 方法调用该类,就能实现对网页的压缩。
结论
ASP.NET MVC 提高运行速度的几种性能优化方法的更多相关文章
- ASP.NET中26种性能优化方法
系统类 Type类,Object类,String类, Arrary类,Console类, Exception类,GC类, MarshalByRefObject类, Math类. DateTime结构 ...
- ASP.NET MVC 表单的几种提交方式
下面是总结一下在ASP.NET MVC中表单的几种提交方式. 1.Ajax提交表单 需要引用 <script type="text/javascript" src=" ...
- ASP.NET MVC 3 之表单和 HTML 辅助方法(摘抄)
——选自<ASP.NET MVC3 高级编程(第5章) 孙远帅 译> 第5章 表单和HTML辅助方法 本章内容简介: * 理解表单 * 如何利用HTML辅助方法 * 编辑和输入的辅助方法 ...
- Asp.net MVC的Model Binder工作流程以及扩展方法(2) - Binder Attribute
上篇文章中分析了Custom Binder的弊端: 由于Custom Binder是和具体的类型相关,比如指定类型A由我们的Custom Binder解析,那么导致系统运行中的所有Action的访问参 ...
- ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解
原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details 方法 打开M ...
- 【译】ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解
原文:[译]ASP.NET MVC 5 教程 - 11:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details ...
- Asp.net MVC的Model Binder工作流程以及扩展方法(1)
Asp.net MVC的Model Binder工作流程以及扩展方法(1)2014-03-19 08:02 by JustRun, 523 阅读, 4 评论, 收藏, 编辑 在Asp.net MVC中 ...
- ASP.NET26个性能优化方法
1.数据库访问性能优化 (1)数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连 ...
- ASP.NET26 个常用性能优化方法
数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连接池(Co ...
随机推荐
- 【bzoj4942】[Noi2017]整数 压位+线段树
题目描述 P 博士将他的计算任务抽象为对一个整数的操作. 具体来说,有一个整数 $x$ ,一开始为0. 接下来有 $n$ 个操作,每个操作都是以下两种类型中的一种: 1 a b :将 $x$ 加上整数 ...
- 【leetcode 简单】 第六十题 反转链表
反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代 ...
- [SDOI2010]外星千足虫 题解 高斯消元+bitset简介
高斯消元 + bitset 简介: 高斯消元其实就是以加减消元为核心求唯一解.这道题还是比较裸的,可以快速判断出来.我们将每一只虫子看作一个未知数,这样根据它给出的 m 组方程我们可以高斯消元得出每一 ...
- 【译】第十一篇 SQL Server代理维护计划
本篇文章是SQL Server代理系列的第十一篇,详细内容请参考原文 在这一系列的上一篇,我们看了使用代理帐户模仿Windows安全上下文完成作业步骤的工作.大多数子系统支持代理账户,同时子系统限制代 ...
- 【杂谈】需要mark的一些东西
https://riteme.github.io/blog/2017-10-28/oi-coding-guidelines.html https://www.luogu.org/blog/34238/ ...
- word文档下划线无法显示的解决方法
在编辑文档的时候经常会遇到下划线无法显示的情况,如图: 如果遇到不能在姓名后面加下划线的情况,我们该怎么做? 请看下面的图解: 1.首先点击左上角的office图标 2.点击右下角“word选项” 3 ...
- orcale数据库分配用户
account lock:创建用户的时候锁定用户 account unlock:创建用户的时候解锁用户,默认该选项 create user zhou8–用户名 identified by zhou88 ...
- 【前端】上拉加载更多dropload.min.js的使用
代码如下:入职代码修改接口及html为自己的即可(下面主要展示js部分) <!DOCTYPE html><html> <head> <meta charset ...
- AngularJs(SPA)单页面SEO以及百度统计应用(上)
只有两种人最具有吸引力,一种是无所不知的人,一种是一无所知的人 问:学生问追一个女孩总是追不上怎么办?回答:女孩不是追来的,是吸引来的,你追的过程是吸引女孩的过程,如果女孩没有看上你,再追都是没有用的 ...
- C++拾遗——重新开始
http://www.cnblogs.com/uniqueliu/category/307731.html