MVC 缓存

为什么要讲缓存、缓存到底有什么作用?

下面我们来说一个场景我们有一个首页菜单的布局基本是不会经常发生的变化,如果动态生成的 Web 页被频繁请求并且构建时需要耗用大量的系统资源,那么,如何才能改进这种情况的响应时间了?于是在这种情况下面缓存就起作用了,这样我们就可以避免频繁的去访问服务器增加服务器的压力。现在我们来MVC 页面缓存,下面我们使用一个简单的例子之前先看一下原理

于是现在我们在分析分析如何的看一个页面是否进行了相应的缓存行为。他里面的参数含义。

cache-control是用于控制网页的缓存.常见的取值有private、no-cache、max-age、must- revalidate等,默认为private

cache-control

打开新窗口(_blank)

private、no-cache、must-revalidate 再次访问服务器
Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不 会去服务器)

在地址栏回车
值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。
值为no-cache,那么每次都会访问。
值为max-age,则在过期之前不会重复访问。

按后退按扭
值为private、must-revalidate、max-age,则不会重访问,
值为no-cache,则每次都重复访问

按刷新按扭
无论为何值,都会重复访问

private   max-age=0 表示每次都会去访问服务器 如果不是0表示缓存设置的时间

建议:

1.对于js和css可以独立到一个二级域名中,启用GZIP,且设置较长的过期时间

2.对于图片独立到另一个二级域名中,且设置较长的过期时间

对于静态文件(html)如果长期不更新也可以设置稍长的过期时间(如30天),根据实践的需要设置更新的时间。

对于动态文件(php)可以设置较短的过期时间(如120秒)

注意:在过期时间内,如果您对文件内容进行了变化,对于用户或蜘蛛都不能浏览或抓取到你更改后的内容。 这也是动态文件设置较短过期时间的主要原因。cache-control的设置只是为了节约搜索引擎蜘蛛资源,让其抓取更多有效内容,千万不能弄巧成拙。

如何使用MVC 搭建一个简单的缓存首先在web 页面配置一个这个

  <caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="Index" duration="20" enabled="true" location="ServerAndClient" varyByParam="city,type"/>
</outputCacheProfiles>
</outputCacheSettings>
</caching>

然后在Action里面写加入[OutputCache(CacheProfile = "Index")]  与 Response.Cache.SetOmitVaryStar(true) 这样就可以实现简单的缓存了

  [OutputCache(CacheProfile = "Index")]
public ActionResult Index()
{
Response.Cache.SetOmitVaryStar(true);
ViewBag.Message = "欢迎使用 ASP.NET MVC!";
List<Person> persons=new List<Person>
{
new Person(){Name="Lin",Age=23},
new Person(){Name ="Zhang",Age=24},
new Person(){Name="Tang",Age = 25} };
JavaScriptSerializer json=new JavaScriptSerializer();
ViewBag.Json = json.Serialize(persons);
return View();
}

第一次访问是这个的。

我们点击一下F5在观察一下状态304

304(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。服务器可以告诉 Googlebot 自从上次抓取后网页没有变更,进而节省带宽和开销。

现在看出了缓存的优点了吧。其实缓存使用的方式有很多.

明天我们将讲解一下MVC 里面配置缓存的参数到底是什么样的。如何能够很好的使用MVC 设置页面缓存。

(借鉴 http://www.ggseo.cn/blog/post/cache-control.html)

MVC 缓存1的更多相关文章

  1. MVC缓存

    MVC入门系列教程-视频版本,已入驻51CTO学院,文本+视频学效果更好哦.视频链接地址如下: 点我查看视频.另外,针对该系列教程博主提供有偿技术支持,群号:226090960,群内会针对该教程的问题 ...

  2. MVC 缓存

    MVC  缓存 http://blog.zhaojie.me/2009/09/aspnet-mvc-fragment-cache-1.html redis http://www.cnblogs.com ...

  3. MVC缓存OutPutCache学习笔记 (二) 缓存及时化VaryByCustom

    <MVC缓存OutPutCache学习笔记 (一) 参数配置> 本篇来介绍如何使用 VaryByCustom参数来实现缓存的及时化.. 根据数据改变来及时使客户端缓存过期并更新.. 首先更 ...

  4. MVC缓存OutPutCache学习笔记 (一) 参数配置

    OutPutCache 参数详解 Duration : 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的. Location : 缓存放置的位置; 该 ...

  5. MVC缓存03,扩展方法实现视图缓存

    关于缓存,先前尝试了: ● 在"MVC缓存01,使用控制器缓存或数据层缓存"中,分别在控制器和Data Access Layer实现了缓存 ● 在"MVC缓存02,使用数 ...

  6. MVC缓存02,使用数据层缓存,添加或修改时让缓存失效

    在"MVC缓存01,使用控制器缓存或数据层缓存"中,在数据层中可以设置缓存的有效时间.但这个还不够"智能",常常希望在编辑或创建的时候使缓存失效,加载新的数据. ...

  7. MVC缓存OutputCacheAttribute 类提高网站效率(转)

    原文转自:http://www.cnblogs.com/iamlilinfeng/p/4419362.html 命名空间:  System.Web.Mvc 程序集:  System.Web.Mvc(在 ...

  8. MVC缓存技术

    一.MVC缓存简介 缓存是将信息(数据或页面)放在内存中以避免频繁的数据库存储或执行整个页面的生命周期,直到缓存的信息过期或依赖变更才再次从数据库中读取数据或重新执行页面的生命周期.在系统优化过程中, ...

  9. MVC缓存,使用数据层缓存,添加或修改时让缓存失效

    在"MVC缓存01,运用控制器缓存或数据层缓存"中,在数据层中可以设置缓存的有用时刻.但这个还不够"智能",常常期望在修改或创立的时分使缓存失效,加载新的数据. ...

随机推荐

  1. 乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    原文:乐在其中设计模式(C#) - 外观模式(Facade Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 外观模式(Facade Pattern) 作者:webabcd 介绍 ...

  2. [LeetCode179]Largest Number

    题目: Given a list of non negative integers, arrange them such that they form the largest number. For ...

  3. cocos2dx3.1-lua移植android流程

    我很懒惰,写这篇博客只是为了能够转出后,当忘记查看,所以我写了下面非常简单的内容.假设完全没有经验的学生请找另一篇文章 一.环境配置(win7): 用户变量如下面: ANDROID_SDK_ROOT: ...

  4. 【原版的】Redis事件驱动内核

    Redis事件驱动内核 作者:cf (360电商技术组) 概述 Redis实现了自己的事件驱动,与开源事件库libevent.libev一样,都是基于I/O多路复用技术实现的.出于性能和代码精炼双方面 ...

  5. IIS安装asp组件:JMail 邮件收发组件

    JMail简介 jmail是一种服务器端的邮件发送组件,和个人用的客户端邮件软件不一样的.jmail是在服务器上给程序用来发邮件用的,除了软件编程人员,其他人一般平常用不上. jmail是一个第三方邮 ...

  6. 初学者应学会如何加快seo

    新手学习如何加快seo 介绍: 应该如何初学者学习SEO,前弯路.真正的高手SEO知识. 作为一个新人,学习如何加快seo知识吧?        多人天天都在学习seo知识.看别人的文章.看多了就感觉 ...

  7. Android在ListView滑动数据混乱

    我相信做过Android应用程序开发或多或少都遇到了这个问题.或者是在ListView数据损坏幻灯片事件.要么GridView数据损坏幻灯片事件. 让我们来看看一个网友写的文章,个人感觉还不错的文章: ...

  8. 谈话节目APE系列:如何成为技术达人

    作为一个程序猿,总有消退的前辈.或更年轻的同行.牛逼的人总是羡慕. 让我们搞自己痛苦的日子 BUG .头发很快结束了抓,人们扫两.修改一行代码.问题得以克服:例如,他们自己开发的十年,少付 10K , ...

  9. Python科学计算库演示

    号码值计算基础 NumPy至Python提供了高速的多维数组处理的能力.而SciPy则在NumPy基础上加入了众多的科学计算所需的各种工具包,有了这两个库,Python就有差点儿和Matlab一样的处 ...

  10. (hdu step 7.1.5)Maple trees(凸包的最小半径寻找掩护轮)

    称号: Maple trees Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...