网站速度优化的一般方法

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

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

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>

转载于:https://www.cnblogs.com/Raywang80s/p/3624104.html

[转]Asp.net mvc 网站之速度优化 -- 页面缓存相关推荐

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

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

  2. 浅谈网站访问速度优化

    周末女朋友公司的智慧医保项目上线了,但是web端访问速度比较慢,然后就来问问我有没有好的优化方案.于是就这篇[浅谈网站访问速度优化]就诞生了. 1.备案:好多个人网站为了方便,往往不喜欢备案,就把网站 ...

  3. 监测ASP.NET MVC 网站

    使用MiniProfiler调试ASP.NET MVC网站性能,MiniProfiler可以很好的处理网站后端每个处理时间的事件,但是MiniProfiler是无法远程做监测的动作,MiniProfi ...

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

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

  5. 使用Glimpse 监测ASP.NET MVC网站

    使用MiniProfiler调试ASP.NET MVC网站性能,MiniProfiler可以很好的处理网站后端每个处理时间的事件,但是MiniProfiler是无法远程做监测的动作,MiniProfi ...

  6. ASP.NET MVC 实现与SQLSERVER的依赖缓存

    ASP.NET MVC 实现与SQLSERVER的依赖缓存 原文:ASP.NET MVC 实现与SQLSERVER的依赖缓存 本文主要是为了了解ASP.NET MVC 实现与SQLSERVER的依赖缓 ...

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

    http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC ...

  8. [转载]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC的Web程序中的Global文件来简单的重写路由.也介绍了它本身的局限性-依赖于路由信息中的键值对: 如果键值对中没有的值,我们无法将 ...

  9. ASP.NET MVC ETag Cache等优化方法

    背景 最近有一个项目是用SmartAdmin + Jquery + EasyUI 一个ASP.NET MVC5的项目,一直存在一个性能问题,加载速度比较慢,第一次加载需要(在没有cache的情况下)需 ...

最新文章

  1. 802.11MAC基础
  2. Java需要掌握的底层知识_java程序员需要知道的底层知识(一)
  3. 如何去掉html body里的 nbsp,html的空格和nbsp怎么去除?
  4. SpringMVC图片上传与显示
  5. 找到符合条件的索引_高频面试题:MySQL联合索引的最左前缀匹配原则
  6. Java-使用反射获取类型信息
  7. Jupyter Notebook代码提示及补齐功能
  8. ASP.NET MVC 2中的数据验证
  9. 中国计算机学会(CCF)推荐中文科技期刊目录
  10. 基于matlab的信号与系统课程设计,信号与系统课程设计基于 MATLAB 完成信号与系统综合设计实验...
  11. Windows勒索病毒补丁下载
  12. 人工智能与安全论坛:智能与安全的融合与对抗
  13. oppoA83怎么升级android版本,OPPOA83系统刷机包(官方最新固件升级包正式版-A.37)...
  14. android 视频 宽高比,科普:什么是视频宽高比?
  15. 如何打开和修改CAJ格式的文档?
  16. Python实现对某微博用户数据分析
  17. 完美移除ESXI 7.0默认120G虚拟闪存,并支持自由调整,释放被占用的磁盘空间
  18. 响应式极简新闻发布系统源码
  19. 交通领域主要SCI期刊——2017年JCR
  20. 【最新】iOS App上架AppStore 教程 (Part 二)

热门文章

  1. PlantUML in a nutshell(官方文档)
  2. python笔记03_IO编程
  3. GA遗传算法入门到掌握
  4. go mysql es 不要分词_ElasticSearch踩坑记录-Go语言中文社区
  5. linux声卡测试命令,linux添加声卡驱动使用命令行音频播放器的方法
  6. linux 测试端口连通性_磨刀不误砍柴工,带你搞定云网络系统性能测试
  7. 蓝桥杯 2016年C语言组大学B组 C/C++
  8. 6-3 断言与防御式编程
  9. NumPy中特别的数组函数 By Youki~
  10. Python中中文字符也算单个字符