(1)   MVC BaseController: Controller内

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
List<string> keys = new List<string>();
// retrieve application Cache enumerator
IDictionaryEnumerator enumerator = HttpRuntime.Cache.GetEnumerator();
// copy all keys that currently exist in Cache
while (enumerator.MoveNext())
{
keys.Add(enumerator.Key.ToString());
}
// delete every key from cache
for (int i = 0; i < keys.Count; i++)
{
HttpRuntime.Cache.Remove(keys[i]);
}
}

public ActionResult Index()
{
HttpContext.Response.ContentType = "text/plain";
HttpContext.Response.Buffer = true;
HttpContext.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
HttpContext.Response.AddHeader("pragma", "no-cache");
HttpContext.Response.AddHeader("cache-control", "private");
HttpContext.Response.CacheControl = "no-cache";
}

[OutputCache(Duration = 0, Location = OutputCacheLocation.Client)]
public ActionResult Index()
{
var columnList = new List<ColumnDisplayModels>();
var viewModel = new ReportModels
{
ReportId = 1,
ReportName = "",
ReportSql = "",
ReportColumns = columnList
};
return View(viewModel);
}

(2) HTML方法

 <HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
</HEAD>

(3) 重新调用原页面的时候在给页面传一个参数:    href="****.ASPX?random()"

ASPX:

方法1 aspx页的顶部加一句声明<%@ OutputCache Duration="60" VaryByParam="none" %>
方法2 Page_Load事件中加上
Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
方法3
在请求网址后面加一个时间戳的参数。
xxx.aspx?d=aaa
aaa用datetime.now

Web.config中配置缓存:

一、web.config 配置页面输出缓存

<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="pageCache" duration="60" varyByParam="none" enabled ="true"/>
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>

页面调用:

(1)Duration属性
该属性指定页或用户控件进行缓存的时间,以秒为单位。在页或用户控件上设置该属性为来自对象的 HTTP 响应建立了一个过期策略,并将自动缓存页或用户控件输出。
例如:设置页或用户控件进行输出缓存的持续时间为100秒。代码如下:
<%@ OutputCache Duration="100" VaryByParam="none" %>
注意:这是必选属性。如果未包含该属性,将出现分析器错误。

(2)VaryByParam属性
该属性为分号分隔的字符串列表,用于使输出缓存发生变化。默认情况下,这些字符串与随GET方法发送的查询字符串值对应,或与使用POST方法发送的参数对应。将该属性设置为多个参数时,对于每个指定参数组合,输出缓存都包含一个不同版本的请求文档。可能的值包括none、星号 (*)以及任何有效的查询字符串或POST参数名称。
注意:在ASP.NET页和用户控件上使用@OutputCache指令时,需要包含VaryByParam属性或VaryByControl属性。如果没有包含VaryByParam属性或VaryByControl属性,则发生分析器错误。如果不希望通过指定参数来改变缓存内容,可将VaryByParam属性值设置为none。如果希望通过所有的参数值改变输出缓存,可将属性设置为星号(*)。

二、web.config 配置 asp.net 应用程序全局缓存配置

<cache disableMemoryCollection = "false"     //获取或设置一个值,该值指示是否当计算机处于内存压力下时是否禁止执行缓存内存回收
  disableExpiration = "false"                  //获取或设置一个值,该值指示是否禁用缓存过期。如果禁用,则缓存项不会过期,并且不会对过期缓存项执行后台清理。
  privateBytesLimit = "20971520"       //获取或设置一个值,该值指示在缓存开始刷新过期项并尝试回收内存之前应用程序的最大专用字节大小。 此限制同时包括缓存所使用的内存量以及运行应用程序的正常内存开销。 如果设置为零,则指示 ASP.NET 将使用自己的试探法确定何时开始回收内存。
  percentagePhysicalMemoryUsedLimit = 60"
  privateBytesPollTime = "00:01:00"/>    //获取或设置一个值,该值指示两次轮询应用程序专用字节内存使用量之间的时间间隔。

备注:给页面统一加上缓存

public class basepage : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.InitOutputCache(1000, null, null, OutputCacheLocation.ServerAndClient, "*");
}
}

华赐软件: www.huacisoft.com

C#开源社区: www.opencsharp.net

清泓美肤苑: 清泓美肤苑

Html5网站后台: Bootstrap3+html3+div+css3

 

Ajax在解决缓存时有三种办法。
1、加时间戮
对于一个浏览器,你的第一次点击是会调用rpc请求的, 但是你再用同一个浏览器提交表单的时候, rpc不会被提交, 因为参数一样, 这个可能是ajax的XMLHttpRequest对象的问题, 如设置了时间间隔了,实际上是(new ActiveXObject("Microsoft.XMLHTTP"))所以, 在实际操作的时候, 给rpc的参数传递一个没有用的guid= new Date().getTime()
一个时间戳 ,以保证每次的点击事件都会激发rpc请求, 因为这样的参数(或者说url)是不一样的。
为什么要把时间戳追加到目标url?
在某些情况下, 有些浏览器会把多个XMLHttpRequest请求的结果缓存在同一个url。如果对每个请求的响应不同,这就会带来不好的结果。把当前时间戳追加到url的最后,就能确保url的唯一性,从而避免浏览器的缓存结果。
2、在要异步获取的页面中写一段禁止缓存的代码:
Response.Buffer =True
Response.ExpiresAbsolute =Now() - 1
Response.Expires=0
Response.CacheControl="no-cache"
3、在ajax发送请求前加上xmlHTTP.setRequestHeader("If-Modified-Since","0");可以禁止缓存
xmlHTTP.open("get", URL, true);
xmlHTTP.onreadystatechange = callHTML;
xmlHTTP.setRequestHeader("If-Modified-Since","0");
xmlHTTP.send();

<%
    HttpContext.Current.Response.Buffer = true;
    HttpContext.Current.Response.Expires = 0;
    HttpContext.Current.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
    HttpContext.Current.Response.AddHeader("pragma", "no-cache");
    HttpContext.Current.Response.AddHeader("cache-control", "private");
    HttpContext.Current.Response.CacheControl = "no-cache";
%>

[清理页面缓存]asp.net、html的更多相关文章

  1. asp.net/html清理页面缓存的方法

    (1)   MVC BaseController: Controller内 protected override void Initialize(System.Web.Routing.RequestC ...

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

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

  3. ASP.NET 页面缓存

    ASP.NET 实现页面缓存页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明<%@ OutputCache Duration="60" VaryByParam ...

  4. ctrl+shift+del 清理火狐缓存,解决页面显示错乱问题

    ctrl+shift+del 清理火狐缓存,解决页面显示错乱问题

  5. (转) ASP.NET页面缓存

    原文:http://www.cnblogs.com/Sky_KWolf/archive/2010/12/05/1897158.html 静态页面全部内容保存在服务器内存中.当再有请求时,系统将缓存中的 ...

  6. ASP.NET几种清除页面缓存的方法

    在asp.net中使用模式dialog时,你会发现每次打开的页面都是相同的内容,页面内容并没有刷新,这是缓存的原因造成的, 解决方法如下: 第一种是ASP.NET清除页面缓存 Response.Buf ...

  7. 关于asp.net页面缓存

    1,ASPX页面缓存 页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明<%@ OutputCache Duration="60" VaryByParam=&q ...

  8. [Asp.net]缓存之页面缓存,控件缓存,缓存依赖

    写在前面 上篇文章介绍了缓存的基本概念及用途,另外也举了一个简单的例子,数据缓存(将一些耗费时间的数据加入到一个对象缓存集合中,以键值的方式存储.可以通过使用Cache.Insert()方法来设置缓存 ...

  9. 在ASP.NET MVC 3 中自定义AuthorizeAttribute时需要注意的页面缓存问题

    一.ASP.NET MVC中使用OutputCache实现服务器端页面级缓存 在ASP.NET MVC中,假如我们想要将某个页面(即某个Action)缓存在服务器端,可以在Action上标上以下特性: ...

随机推荐

  1. 两个小的java程序,用于练习java基本语法

    1.输入两个数,求其加减乘除.用窗口的形式呈现 import javax.swing.JOptionPane; public class JJCC { public static void main( ...

  2. JS 信息提示弹框封装

    // 功能提示弹框 function tipsBox ( option ) { var html = ''; if ( option.type == 'success' ) { html += '&l ...

  3. 2016 - 1 - 23 json解析

    一: json   1. 什么是json 1.1 json是一种轻量级的数据格式,一般用于数据交互. 1.2 服务器返回给客户端的数据,一般都是JSON或者XML格式(文件下载除外).   2. JS ...

  4. C语言实现双向循环链表

    #include <stdio.h> #include <stdlib.h> #include <string.h> struct list_head { stru ...

  5. 甘特图和PERT图

    gantt图又叫甘特图.进度是按时间顺序计划活动的一个列表,我们称之为Gantt图,它有以下几个关键的成分:1.横跨图顶部排列的是日历表.2.最左边的一列包含了每项任务的标识号(ID).3.左边第二列 ...

  6. hybrid app 简介

    Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”. Hyb ...

  7. iOS-----类和对象,nil/Nil/NULL的区别

    iOS中类和对象,nil/Nil/NULL的区别 类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法). 对象是类的一个实例,是一个具体的事物. ...

  8. Sprint第二个冲刺(第九天)

    一.Sprint 计划会议: 现在简单说一下Sprint2的进展情况:大部分功能已经完成或者正在做,此次Sprint2中最难的设计商家的数据库表格已经完成了,剩下的其他功能都是比较耗时的,现在也在抓紧 ...

  9. import tf

    不知道为什么,tensorflow要最后import,否则会对matplotlib的imread产生影响,产生IO错误,异常莫名其妙

  10. hdu2191 悼念512汶川大地震 ——多重背包

    link:http://acm.hdu.edu.cn/showproblem.php?pid=2191 最简单的那种 #include <iostream> #include <cs ...