网站速度优化的一般方法

由于网站最重要的用户体验就是速度,特别是对于电子商务网站而言。

一般网站速度优化会涉及到几个方面:

1. 数据库优化 — 查询字段简历索引,使用数据库连接池和持久化,现在还有种趋势,就是选择使用No SQL作为补充;

2. 数据缓存 — 使用Memcached等;

3. 负载均衡 — 使用ngnix等

4. 页面缓存 — 将.aspx, .jsp等动态页面缓存或静态化为.html页面

5. 前端优化 — Yahoo 14条前端优化原则。

城江湖(Incity.me)针对 2 数据缓存, 4 页面静态化, 5 Yahoo 14条优化原则做了具体的实践,并获得了实际效果,以后的系列文章会举出一些实践方法和列出部分代码,这次主要针对页面缓存进行说明。

哪些地方需要页面缓存?

以InCity为例,首页商品分类帮助中心等都是用于展示商品和网站信息的,与用户的交互相对较少。在某个时间段内(1小时),所有用户看到的页面都应该是相同的, 并不会因为不同的用户而显示不同的信息。

全局页面缓存 OutputCache

InCity是基于ASP.NET MVC开发的,熟悉ASP.NET MVC的童鞋都知道,ASP.NET MVC自带了一个属性叫OutputCache,  最常用的是Duration和VaryByParam两个参数:

MSDN:

Duration:表示页或用户控件进行缓存的时间(以秒计)

VaryByParam:分号分隔的字符串列表,用于使输出缓存发生变化。

Code:

[OutputCache(Duration="3600" VaryByParam="type")]

public ActionResult Catalog(string type)

解释一下:

1. 用户第一次输入http://incity.me/catalog/food,从后台获取,并为catalog/food生成缓存页面,3600秒内缓存页面有效。

2. 用户再次输入http://incity.me/catalog/food,从缓存页面获取。

3. 当用户第一次输入http://incity.me/catalog/play的时候,因为{type}从food变成了play,数据从后台获取,并为catalog/play生成缓存代码3600秒内有效。

4.用户再次输入http://incity.me/catalog/play,从缓存页面获取。

局部页面缓存 PartOutputCache

上述的解决方法对于大部分都可以处理,但是如果遇到下面的情况怎么办?登录前首页右侧的面板是显示登录区,登录后是显示用户信息,而首页如果采用OutputCache全局页面缓存的话,则右侧显示不同的账户信息的。因为前面我们已经提到,在某个时间段内(1小时),所有用户看到的页面都应该是相同的。

登录前:

登录后:

这时候就需要针对左侧的商品作局部缓存,而对右侧不使用缓存。如何达到这个效果呢?遗憾的是,这时候微软官方的ASP.NET MVC并未提供这种功能,因此参考使用了PartOutputCache,用法如下:

[PartOutputCache(CacheDuration = 3600)]

public ActionResult ShowCase()

aspx页面代码则变成了

<div id=”Container”>

<!–使用了缓存–>

<%Html.RenderAction<HomeController>(p => p.IndexShowCase());%>

<!–没有使用缓存–>

<%Html.RenderAction<HomeController>(p => p.LoginPanel());%>

</div>

Asp.net mvc 网站之速度优化 -- 页面缓存的更多相关文章

  1. [转]Asp.net mvc 网站之速度优化 -- 页面缓存

    网站速度优化的一般方法 由于网站最重要的用户体验就是速度,特别是对于电子商务网站而言. 一般网站速度优化会涉及到几个方面: 1. 数据库优化 — 查询字段简历索引,使用数据库连接池和持久化,现在还有种 ...

  2. ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL

    ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流量. ...

  3. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase

    原文地址:http://www.51csharp.com/MVC/882.html   ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL 引言-- 在初级篇中,我们 ...

  4. ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL

    ASP.NET MVC URL重写与优化(初级篇)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流 ...

  5. ASP.NET MVC 网站开发总结(三) ——图片截图上传

    本着简洁直接,我们就直奔主题吧,这里需要使用到一个网页在线截图插件imgareaselect(请自行下载). 前台页面: <!DOCTYPE html> <html> < ...

  6. Asp.net MVC网站的基本结构

    Asp.net MVC网站的基本结构:Controller->IBLL(定义业务接口)->BLL->DA(调用Utility)->数据库 ,其中A->B表示A调用B 1. ...

  7. 总结一下ASP.NET MVC 网站的部署问题

    总结一下ASP.NET MVC 网站的部署问题 近日,准备把MVC建了一个新的测试站点部署到IIS上面,结果没想到出现了一系列的问题和错误,准备记录一下. 第一个问题,就是如何将MVC的站点部署到II ...

  8. 阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅

    做了多年的Web开发工作,网站部署也不在话下,可每次部署却并不是十分顺利,将本次在阿里云服务器上部署asp.net mvc网站遇到的问题记录如下. 平台是阿里云ECS,操作系统是 Windows Se ...

  9. 用网站(WebSite而不是WebProject)项目构建ASP.NET MVC网站

    从ASP.NET MVC第一个版本开始到现在,创建ASP.NET MVC项目的官方方法只有一个,“文件”->“新建”->“项目”,然后选择ASP.NET MVC X Web应用程序. 这种 ...

随机推荐

  1. linux环境下redis安装

    本篇文章主要说明的是Linux环境下redis数据库的安装: 首先进入目标目录: 下载安装包,执行命令: wget http://download.redis.io/releases/redis-4. ...

  2. 教你使用SQL查询(1-12)

    教你使用 Select 查询语句 (1) SELECT 语句基本语法简介 http://jimshu.blog.51cto.com/3171847/1363101(2) TOP 和 OFFSET 筛选 ...

  3. xcode6

    官方的xcode6下载太慢,这里送上百度网盘地址: http://pan.baidu.com/s/1hqze1hi

  4. Tensorflow 初级教程(一)

    初步介绍 Google 于2011年推出人工深度学习系统——DistBelief.通过DistBelief,Google能够扫描数据中心数以千计的核心,并建立更大的神经网络.Google 的这个系统将 ...

  5. oracle 查询重复数据并且删除, 只保留一条数据重复数据

    最近面试中都遇到了这样一个数据库题: 删除表中的重复数据,有且只保留一条重复数据. 思路: 1)这个题需要用到rowid,首先找到重复数据的rowid,并找出rowid最大或最小值,作为删除的条件: ...

  6. scala actor编程之对象传递

    scala 最吸引人的一点就是actor并发编程了.但是纵观scala官方文档,baidu文档,IBM文档都写的通过字符串传呀传,如果用作actor编程说明当然没有问题.但是在正式开放中,光传字符串就 ...

  7. mysql设置指定ip远程访问连接的方法

    本文实例讲述了mysql设置指定ip远程访问连接的方法,分享给大家供大家参考.具体实现方法如下: 1. 授权用户root使用密码jb51从任意主机连接到mysql服务器: 复制代码 代码如下: GRA ...

  8. ppm图像相关

    PPM图像格式介绍 直接拿具体的数据来说明是最直接的,使用ue打开ppm文件,采用的都是十六进制asc码表示的,这里要注意地址00000000h中的最后一个字母是始终不变的,这原来没注意晕了我好久,第 ...

  9. PAT 天梯赛 L3-013. 非常弹的球 【物理】

    题目链接 https://www.patest.cn/contests/gplt/L3-013 思路 将速度 分解成 竖直方程 和 垂直方向 当 角度为 45° 时 射出的时候 水平方向 最远 所以 ...

  10. Luogu-4049 [JSOI2007]合金

    题目中给出了三种金属的比例,实际上只用考虑两个就可以,第三个可以由另外两个确定qwq 如果把原料和需求看做二维平面上的点,可以发现两种原料能混合成的比例就在他们相连的线段上,也就是说线段上的点都能混合 ...