使用页面输出缓存
可以给页面添加<%@ OutputCache%>指令启用页面输出缓存。
CachePageOutput.aspx
页面缓存15秒。
1、使用参数改变输出缓存
例程:
一概要面和详情页。单击概要页标题,详情面显示选中的详细信息。
通常会在概要面和详情页间传递一个查询字符串参数来指定显示在详细页中的内容。如果缓存详情页的输出内容,那么就会导致每个人都只能看到第一个选中的内容。
通过使用VaryByParam特性解决这个问题。
数据表
主页,master.aspx
从页面:Details.aspx
Web.config增加
结果:
单击从页
当前时间 11:47
可以看出进行了缓存。
Details.aspx中代码<%@ OutputCache Duration="3600" VaryByParam="id" %>
缓存1小时
VarByParam会导致更多的缓存而不是更少的缓存。
2011-5-17 11:47 danny
2、基于控件变化的输出缓存
VarByControl特性用于根据页面中的特定控件的值生成不同版本的页面缓存。
MasterDetails.aspx
2011-5-17 13:05 danny
3、基于头变化的输出缓存
VaryByHeader特性,使得在特定的浏览器头的值变化时,可以创建不同的页面缓存版本。
Accept-Language
User-Agent
Cookie
varyByHeader.aspx
不同的浏览器有不同的值,不可预知,不建议使用。
2011-5-17 13:17 danny
4、基于浏览器变化的输出缓存
VaryByCustom 值为browser 两个要考虑的:浏览器类型和它的主版本号。
IE 和FireFox不同的页面缓存
IE5、IE6不同的页面缓存
VaryByBrowser.aspx
其中Maxthon和IE8显示的是同一缓存,但和FireFox是不同的。
由此可见,Maxthon其实用的是IE的内核。
5、基于自定义函数变化的输出缓存
VaryByCustom可以指定一个自定义函数来决定何时生成不同的页面缓存版本。
在Global.asax文件中重写GetVaryByCustomString()方法来创建自定义函数。
VaryByCustom.aspx
其中,IE8,Maxthon和FireFox都是同一缓存的。
2011-5-17 13:33 danny
6、设置缓存位置
<%@OutputCache%>
Location特性指定页面被缓存在哪里
Any --页面被缓存在浏览器、代理服务器和Web服务器(默认值)
client --页面只缓存在浏览器
DownStream --页面被缓存在浏览器和任何代理服务器,但不缓存在服务器
none --页面不缓存
ServerAndClient --页面被缓存在浏览器和Web服务器,但不缓存在代理服务器
CacheLocation.aspx
还是以前一样,Maxthon和IE是同一内核,显示同一缓存,而FireFox是不同的。
7、创建页面输出缓存文件依赖
可以在一缓存页面和硬盘上的一个文件(或一级文件)之间创建一个依赖。当文件修改时,缓存页面自动失效并重新在下次页面请求时生成。
Movies.xml
OutputCacheFileDependency.aspx
2011-5-17 13:57 danny
可以给页面添加<%@ OutputCache%>指令启用页面输出缓存。
CachePageOutput.aspx
<%@ Page Language="C#" %> <%@ OutputCache Duration="15" VaryByParam="none" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { lblTime.Text = DateTime.Now.ToString("T"); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblTime" runat="server" /> </div> </form> </body> </html>
页面缓存15秒。
1、使用参数改变输出缓存
例程:
一概要面和详情页。单击概要页标题,详情面显示选中的详细信息。
通常会在概要面和详情页间传递一个查询字符串参数来指定显示在详细页中的内容。如果缓存详情页的输出内容,那么就会导致每个人都只能看到第一个选中的内容。
通过使用VaryByParam特性解决这个问题。
数据表
Movies id int 自动增长 Title Nvarchar(50) Director nvarchar(50) DateReleased datetime Description nvarchar(MAX)
主页,master.aspx
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="grdMovies" AutoGenerateColumns="False" DataSourceID="srcMovies" ShowHeader="False" GridLines="None" runat="server"> <Columns> <asp:HyperLinkField DataTextField="Title" DataNavigateUrlFields="id" DataNavigateUrlFormatString="~/Details.aspx?id={0}" /> </Columns> </asp:GridView> </div> <asp:SqlDataSource ID="srcMovies" runat="server" ConnectionString="<%$ ConnectionStrings:Movies %>" SelectCommand="SELECT [id], [Title] FROM [Movies]"></asp:SqlDataSource> </form> </body> </html>
从页面:Details.aspx
<%@ Page Language="C#" %> <%@ OutputCache Duration="3600" VaryByParam="id" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <%=DateTime.Now.ToString("T") %> <hr /> <asp:DetailsView ID="dtlMovie" runat="server" DataSourceID="srcMovies"> </asp:DetailsView> </div> <asp:SqlDataSource ID="srcMovies" runat="server" ConnectionString="<%$ ConnectionStrings:Movies %>" SelectCommand="SELECT Movies.* FROM Movies Where Id=@id"> <SelectParameters> <asp:QueryStringParameter Name="id" QueryStringField="Id" Type="Int32" /> </SelectParameters> </asp:SqlDataSource> </form> </body> </html>
Web.config增加
<connectionStrings> <add name="Movies" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\S4_2.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /> </connectionStrings>
结果:
单击从页
当前时间 11:47
可以看出进行了缓存。
Details.aspx中代码<%@ OutputCache Duration="3600" VaryByParam="id" %>
缓存1小时
VarByParam会导致更多的缓存而不是更少的缓存。
2011-5-17 11:47 danny
2、基于控件变化的输出缓存
VarByControl特性用于根据页面中的特定控件的值生成不同版本的页面缓存。
MasterDetails.aspx
<%@ Page Language="C#" %> <%@ OutputCache Duration="3600" VaryByControl="dropCategories" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <%=DateTime.Now.ToString("T") %> <hr /> <asp:DropDownList ID="dropCategories" runat="server" DataSourceID="srcCategories" DataTextField="Title" DataValueField="id"> </asp:DropDownList> <asp:Button ID="btnSelect" Text="Select" runat="server" /> <br /> <asp:GridView ID="GridView1" runat="server" m GridLines="None" DataSourceID="srcMovies" AutoGenerateColumns="False"> <Columns> <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" SortExpression="id" /> <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> <asp:BoundField DataField="Director" HeaderText="Director" SortExpression="Director" /> <asp:BoundField DataField="DateReleased" HeaderText="DateReleased" SortExpression="DateReleased" /> <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" /> </Columns> </asp:GridView> <br /> </div> <asp:SqlDataSource ID="srcCategories" runat="server" ConnectionString="<%$ ConnectionStrings:Movies %>" SelectCommand="SELECT [id], [Title] FROM [Movies]"></asp:SqlDataSource> <asp:SqlDataSource ID="srcMovies" runat="server" ConnectionString="<%$ ConnectionStrings:Movies %>" SelectCommand="SELECT id, Title, Director, DateReleased, Description FROM Movies WHERE id = @id"> <SelectParameters> <asp:ControlParameter ControlID="dropCategories" DefaultValue="Id" Name="id" PropertyName="SelectedValue" /> </SelectParameters> </asp:SqlDataSource> </form> </body> </html>
2011-5-17 13:05 danny
3、基于头变化的输出缓存
VaryByHeader特性,使得在特定的浏览器头的值变化时,可以创建不同的页面缓存版本。
Accept-Language
User-Agent
Cookie
varyByHeader.aspx
<%@ Page Language="C#" %> <%@ OutputCache Duration="3600" VaryByParam="none" VaryByHeader="User-Agent" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Vary By Header</title> </head> <body> <form id="form1" runat="server"> <div> <%=DateTime.Now.ToString("T") %> <hr /> <%=Request.UserAgent %> </div> </form> </body> </html>
不同的浏览器有不同的值,不可预知,不建议使用。
2011-5-17 13:17 danny
4、基于浏览器变化的输出缓存
VaryByCustom 值为browser 两个要考虑的:浏览器类型和它的主版本号。
IE 和FireFox不同的页面缓存
IE5、IE6不同的页面缓存
VaryByBrowser.aspx
<%@ Page Language="C#" %> <%@ OutputCache Duration="3600" VaryByParam="none" VaryByCustom="browser" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <%=DateTime.Now.ToString("T") %> <hr /> <%=Request.UserAgent %> </div> </form> </body> </html>
其中Maxthon和IE8显示的是同一缓存,但和FireFox是不同的。
由此可见,Maxthon其实用的是IE的内核。
5、基于自定义函数变化的输出缓存
VaryByCustom可以指定一个自定义函数来决定何时生成不同的页面缓存版本。
在Global.asax文件中重写GetVaryByCustomString()方法来创建自定义函数。
VaryByCustom.aspx
<%@ Page Language="C#" %> <%@ OutputCache Duration="3600" VaryByParam="none" VaryByCustom="css" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { if (Request.Browser.SupportsCss) pnlCss.Visible = true; else pnlNotCss.Visible = true; } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Vary by custom</title> </head> <body> <form id="form1" runat="server"> <div> <%=DateTime.Now.ToString("T") %> <hr /> <asp:Panel ID="pnlCss" Visible="false" runat="server"> <span style="font-weight: bold">Hello!</span> </asp:Panel> <asp:Panel ID="pnlNotCss" Visible="false" runat="server"> <b>Hello! not css</b> </asp:Panel> </div> </form> </body> </html>
其中,IE8,Maxthon和FireFox都是同一缓存的。
2011-5-17 13:33 danny
6、设置缓存位置
<%@OutputCache%>
Location特性指定页面被缓存在哪里
Any --页面被缓存在浏览器、代理服务器和Web服务器(默认值)
client --页面只缓存在浏览器
DownStream --页面被缓存在浏览器和任何代理服务器,但不缓存在服务器
none --页面不缓存
ServerAndClient --页面被缓存在浏览器和Web服务器,但不缓存在代理服务器
CacheLocation.aspx
<%@ Page Language="C#" %> <%@ OutputCache Duration="3600" VaryByParam="none" Location="Client" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { Random rnd = new Random(); lblRandom.Text = rnd.Next(10).ToString(); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <%=DateTime.Now.ToString("T") %> <hr /> Your random number is: <asp:Label ID="lblRandom" runat="server" /> <br /> <br /> <a href="CacheLocation.aspx">Request Page</a> </div> </form> </body> </html>
还是以前一样,Maxthon和IE是同一内核,显示同一缓存,而FireFox是不同的。
7、创建页面输出缓存文件依赖
可以在一缓存页面和硬盘上的一个文件(或一级文件)之间创建一个依赖。当文件修改时,缓存页面自动失效并重新在下次页面请求时生成。
Movies.xml
<?xml version="1.0" encoding="utf-8" ?> <movies> <movie title="Star Wars" /> <movie title="King Kong" /> <movie title="The Fly" /> </movies>
OutputCacheFileDependency.aspx
<%@ Page Language="C#" %> <%@ OutputCache Duration="9999" VaryByParam="none" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { Response.AddFileDependency(MapPath("Movies.xml")); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <%=DateTime.Now.ToString("T") %> <hr /> <asp:GridView ID="GridView1" runat="server" DataSourceID="srcMovies" AutoGenerateColumns="False"> <Columns> <asp:BoundField DataField="title" HeaderText="title" SortExpression="title" /> </Columns> </asp:GridView> </div> <asp:XmlDataSource ID="srcMovies" runat="server" DataFile="Movies.xml"></asp:XmlDataSource> </form> </body> </html>
2011-5-17 13:57 danny
发表评论
-
16、使用数据源缓存
2011-06-07 09:43 796使用数据源缓存 除了在页面或用户控件级别进行缓存之外,也可以 ... -
15、使用部分页面缓存2
2011-06-02 09:17 7473、共享用户控件的输出缓存 默认情况下,同一个用户控件在不同页 ... -
14、使用部分页面缓存
2011-05-31 16:10 831使用部分页面缓存 1、 ... -
13、使用页面输出缓存2
2011-05-23 09:23 9248、使用编程方式设置页面输出缓存过期 可以使用Response ... -
11、缓存概览
2011-05-21 13:04 407缓存概览 ASP.NET 3.5 Framework支持下面 ... -
10、使用用户配置文件
2011-05-18 09:09 1084使用用户配置文件 Asp.net Framework提供了一 ... -
9、使用Session状态
2011-05-17 09:16 861使用Session状态 不可能 ... -
8、使用浏览器Cookie
2011-05-16 11:13 1175使用浏览器Cookie set-cook ... -
7、使用角色管理器
2011-05-14 10:32 515使用角色管理器 Asp.net Framework提供三个角 ... -
6、使用ASP.NET Membership
2011-05-13 21:36 768使用ASP.NET Membership 通过Asp.net ... -
5、配置安全授权
2011-05-13 15:14 570配置安全授权 授权是指识别用户是否可以访问特定资源的过程。 ... -
4、配置身份验证
2011-05-13 09:08 936配置身份验证 Asp.net Framework支持三种验证 ... -
3、使用LoginStatus控件
2011-05-12 21:44 901使用LoginStatus控件 根据当前用户的验证状态,Lo ... -
2、使用CreateUserWizard控件
2011-05-12 09:18 1155使用CreateUserWizard控件 CreateUse ... -
1、使用Login控件
2011-05-11 21:27 1374使用Login控件 1、Login控件概览 加密文件: Se ...
相关推荐
里面主要包含asp.net常用的两种缓存技术一是页面输出缓存,二是应用程序缓存,有相应的例子两个以上和对应的说明文档
对ASP.NET2.0 页面输出缓存和页面部分缓存都有介绍 网络整理的
静态页面全部内容保存在服务器内存中。当再有请求时,系统将缓存中的相关数据直接输出,直到缓存... 设置页面输出缓存可以使用以下两种方式:一种是使用@ OutputCache指令,另一种是使用页面输出缓存API。@ OutputCac
页面输出缓存是缓存的整个页面 使用很简单<%@ OutPutCache Duration=”60″ VaryByParam=”none”%> Duration:缓存时间 VaryByParam:通过参数来更新缓存的内容 还有其他的一些属性 CacheProfile:调用...
17.2 使用页面输出缓存 299 17.2.1 启用页面输出缓存 299 17.2.2 按参数改变缓存内容 301 17.2.3 按头改变缓存内容 303 17.2.4 使用自定义字符串改变缓存内容 304 17.2.5 设置缓存位置 305 17.3 使用页面分段缓存 ...
详细介绍静态文件缓存、传统缓存方式、页面输出缓存、页面输出缓存API、页面局部缓存、数据缓存、缓存依赖、客户端缓存、三方缓存。
C# .net 系统缓存 很经典的课程 很全面和详细 客户端缓存 服务器端缓存 1.传统缓存 2.页面输出缓存 3.页面输出缓存api 4.应用程序缓存 4.程序和文件依赖缓存 第三方缓存
复制代码 代码如下:<?... header(‘Last-Modified: ‘ . gmdate(‘D, d M Y H:i:s’) .... 您可能感兴趣的文章:PHP使用header()输出图片缓存实例PHP输出缓存ob系列函数详解基于PHP输出缓存(output_b
另外一种缓存机制是页输出缓存,利用它,可以直接获取存放在缓存中的页面,而不需要经过繁杂的对该页面的再次处理。 应用程序缓存其实现原理说来平淡无奇,仅仅是通过ASP.NET管理内存中的缓存空间。放入缓存中的应用...
输出缓存的前世今生 ASP.NET 1.0引入输出缓存的概念,这使得开发者可以缓存页面、控件、控制器以及HTTP响应的输出到内存中。在后续的Web请求,ASP.NET就可以使用缓存中的内容更快响应。 ASP.NET的输出缓存系统足够...
学习博客园李天平的内容,在VS2008+MS2000上的...系统缓存全解析2:页面输出缓存 系统缓存全解析3:页面局部缓存 系统缓存全解析4:应用程序数据缓存 系统缓存全解析5:文件缓存依赖 系统缓存全解析6:数据库缓存依赖
这不现实,当然,有的时候临时放如服务器缓存,如ob_start()这个缓存页面开启的话在发送文件头之前页面内容都被缓存在内存中,知道等页面输出自动清楚或者等待 ob_get_contents的返回,[或者被ob_end_clean显示的清除,这...
#清除并关闭缓冲,输出到浏览器之前使用这个函数。 ob_end_clean(); #控制隐式缓冲泻出,默认off,打开时,对每个 print/echo 或者输出命令的结果都发送到浏览器。 ob_implicit_flush(1); 例, 复制代码 代码如下: ...
n428 使用编程方式设置页面输出缓存过期 n429 以编程方式操作页面输出缓存 n4210 创建页面输出缓存配置 n43 使用部分页面缓存 n431 使用缓存后替换 n432 用户控件缓存 n433 共享用户控件的输出缓存 n434 以编程方式...
缓存是数据写在内存里面,比fso去读取静态页面快的多,具体不清楚谁快,但是肯定的是,比直接调用数据库快多了,而且不需要修改数据库,简单修改一下本文件,一切全搞定。只要你的服务器支持xmlhttp组件,一切轻松...
在这篇文章里,我将要介绍如何使用PHP的输出控制函数来大幅加速页面载入速度。 介绍PHP的输出控制函数 PHP4中最令人满意的事是——你可以让PHP缓存所有由脚本生成的输出,在你决定把它们送出之前,浏览器方是不会...
打开了php输出缓存: echo,print -> php output_buffring -> server buffering -> browser buffering -> browser display2.未打开php输出缓存: echo,print -> server buffering -> browser buffering -> browser ...
ASP.NET提供三种主要形式的缓存:页面级输出... 要实现页面输出缓存,只要将一条OutputCache指令添加到页面即可。 <%@ OutputCache Duration=”60″ VaryByParam=”*” %> 它支持五个属性(或参数),其