`

15、使用部分页面缓存2

阅读更多
3、共享用户控件的输出缓存
默认情况下,同一个用户控件在不同页面上的实例不共享相同的缓存。
希望跨页面缓存相同的用户控件的内容。需要指定<%@ OutputCache%>指定Shared特性。

SharedMovie.ascx
<%@ Control Language="C#" ClassName="Movies" %>
<%@ OutputCache Duration="600" VaryByParam="none" Shared="true" %>
<script runat="server">

</script>
User Control Time:
<%=DateTime.Now.ToString("T") %>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
    <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>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
    SelectCommand="SELECT * FROM [Movies]"></asp:SqlDataSource>


4、以编程方式处理用户控件缓存
用户控件CachePloicy属性公开了一个ControlCachePolicy类的实例。

SlidingUserCache.ascx
<%@ Control Language="C#" ClassName="SlidingUserCache" %>
<%@ OutputCache Duration="10" VaryByParam="none" %>
<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        CachePolicy.SetSlidingExpiration(true);
        CachePolicy.Duration = TimeSpan.FromMinutes(1);
    }
</script>
User Control Time:
<% =DateTime.Now.ToString("T") %>



5、创建用户控件缓存的文件依赖
CacheControlPolicy.Dependency属性在一个缓存了的用户控件和文件系统中的一个文件(或一组文件)间创建一个依赖。当文件被修改时,用户控件的缓存自动失效,并在下次页面被请求时重新生成。

MovieFileDependency.ascx
<%@ Control Language="C#" ClassName="MovieFileDependency" %>
<%@ OutputCache Duration="9999" VaryByParam="none" %>
<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        CacheDependency depend=new CacheDependency(MapPath("~/Movies.xml"));
        this.CachePolicy.Dependency=depend;
        
    }
</script>

User Control Time:
<%=DateTime.Now.ToString("T") %>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="XmlDataSource1">
    <Columns>
        <asp:BoundField DataField="title" HeaderText="title" SortExpression="title" />
    </Columns>
</asp:GridView>
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/Movies.xml">
</asp:XmlDataSource>


ShowMovieFileDependency.aspx
<%@ Page Language="C#" %>

<%@ Register TagPrefix="movie" TagName="MovieFileDependency" Src="~/MovieFileDependency.ascx" %>
<!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>
        Page Time:
        <%=DateTime.Now.ToString("T") %>
        <hr />
        <movie:MovieFileDependency runat="server" />
    </div>
    </form>
</body>
</html>


在Maxthon2中会出现更新Movie.xml刷新不立即更新的问题,Firefox没有这问题。
2011-5-30 21:17 danny

6、缓存动态载入的用户控件
可以使用Page.LoadControl()方法动态载入一个用户控件。
可以和声明在页面中的用户控件一样缓存动态载入的用户控件。
如果用户控件包括一个<%@OutputCache%>指令,则用户控件无论是用声明方式还是编程方式添加到页面的,它都会缓存。


P170
2011-5-30 21:21 danny
分享到:
评论

相关推荐

    关于vue里页面的缓存详解

    结合router缓存部分页面: 比较实用的例子: 思路:通过beforeRouterLeave这个钩子来对路由里面的keepAlive进行赋值。从而动态的确定A页面是否需要被缓存。 结合router缓存部分页面: 比较实用的例子: 思路:...

    jsp 页面缓存

    jsp 页面 部分数据 缓存,可以设置缓存的时间,可以大大提高页面的访问速度!

    清理Ubuntu等页面缓存,清空物理内存

    清理Ubuntu的页面缓存, drop vm cache。一般大家在做大型工程的编译时,比如linux kernel,Android等总会遇到内存爆满,系统一旦开始刷新swap就奇慢无比,实际上是因为系统硬件内存部分被占满(其中大部分被载入内存...

    Asp.NET性能优化之局部缓存

    上面场景中的1,如果整个页面的缓存失效都定为10分钟,则势必增加性能开销,所以最好的策略是页面的不同部分采用不同的缓存失效时长。对于场景2也一样,我们不应该为了迁就某个BANNER不能应用缓存,就让整个页面都不...

    magento footer no cache,不缓存页面底部footer部分

    magento footer no cache,不缓存页面底部footer部分

    ASP.NET2.0输出缓存

    对ASP.NET2.0 页面输出缓存和页面部分缓存都有介绍 网络整理的

    使用Angular缓存父页面数据的方法

    angular做单页面应用是一个比较好的框架,但是它有一定的入门难度,对于新手来说可能会碰到很多坑,也有许多难题,大部分仔细看文档,找社区是能解决的。 但有些问题也许资料比较少,最近遇到过一个要缓存父页面的...

    最基本的SpringBoot2.0,+Swagger-ui,以及redis作为缓存使用,CacheManage管理

    本项目代码包括,最基本的SpringBoot2.0,+Swagger-ui,以及redis的测试类,redis各种类型数据存储的工具类以及测试的sql文件,redi部分配置CacheManage,并且采用注解方式将数据存入缓存和从缓存redis中删除,码云地址...

    高效的缓存管理解决方案AutoLoadCache.zip

    但在缓存的使用上,每个人都有自己的实现方式,大部分是直接与业务代码绑定,随着业务的变化,要更换缓存方案时,非常麻烦。接下来我们就使用AOP Annotation 来解决这个问题,同时使用自动加载机制 来实现数据...

    ojsputil.jar 片段缓存 JAR包

    内容缓存是Web应用中最普通的优化技术之一,例如,可以使用一个自定义地jsp标签——我们将之命名为——由和将每一个需要被缓存的页面片段封装起来。任何自定义标签可以控制它所包含部分 (也即预先封装的页面片段)在...

    ASP.net Substitution 页面缓存而部分不缓存的实现方法

    在ASP.NET中要实现部分内容非缓存,而其它的都需要缓存输出,可以使用Substitution控件实现.

    移动端H5页面返回并刷新页面(BFcache)的方法

    而对于浏览器来说,大部分浏览器的返回是直接使用缓存的,不会执行任何的javascript代码。原因:部分浏览器在后退时不会触发onload事件,這是HTML5世代浏览器新增的特性之一——Back-Forward Cache(简称bfcache) ...

    ASP.NET 2.0中的页面输出缓存

    静态页面全部内容保存在服务器内存中。当再有请求时,系统将缓存中的相关数据直接输出,直到缓存... 设置页面输出缓存可以使用以下两种方式:一种是使用@ OutputCache指令,另一种是使用页面输出缓存API。@ OutputCac

    分布式键值缓存系统FirstDB.zip

     基础部分:  一套分布式缓存数据库  扩展应用实例:  @基于机器学习的数据分类系统。  @可应用在WEB页面加速。  @构建实时关键信息预测,例交通拥堵预测,道路设计建模。  @公安预警 ,实时环境况...

    ios-Swift 文件缓存--DDGDataCache_Swift库高级封装用法.zip

    要求页面在无网状态先显示上一次显示的数据,这就涉及到缓存, 但是缓存又分为文件缓存,归档等,realm 太过笨重,归档太麻烦,最后选择了文件缓存, 看了很多博客,在参考了别人的缓存开源项目,功能太过简单单一化...

    php页面缓存ob系列函数介绍

    这里有缓存技术的简单介绍:https://www.jb51.net/article/4965.htm   php页面缓存主要用到的是ob系列函数,如ob_start(),ob_end_flush(),ob_get_contents() 下面是编码部分。 1.初始化函数,一般是设置页面缓存...

    ASP.NET 3.5 揭秘(卷2).part2

     4.3 使用部分页面缓存  4.4 使用数据源缓存  4.5 使用数据缓存  4.6 使用SQL缓存依赖  4.7 小结  第5章 多语言本地化应用程序  5.1 设置当前文化  5.2 使用CultureInfo类  5.3 创建本地资源  ...

    ASP.NET3.5揭秘(卷2)part1

     4.3 使用部分页面缓存  4.4 使用数据源缓存  4.5 使用数据缓存  4.6 使用SQL缓存依赖  4.7 小结  第5章 多语言本地化应用程序  5.1 设置当前文化  5.2 使用CultureInfo类  5.3 创建本地资源  ...

    构建高性能Web站点(PDF)-第2部分

    4.3 页面缓存 4.4 局部无缓存 4.5 静态化内容 第5章 动态脚本加速 5.1 opcode缓存 5.2 解释器扩展模块 5.3 脚本跟踪与分析 第6章 浏览器缓存 6.1 别忘了浏览器 6.2 缓存协商 6.3 彻底消灭请求 第7章 Web...

    ASP.NET.4揭秘 卷2

    n43 使用部分页面缓存 n431 使用缓存后替换 n432 用户控件缓存 n433 共享用户控件的输出缓存 n434 以编程方式处理用户控件缓存 n435 创建用户控件缓存的文件依赖 n436 缓存动态载入的用户控件 n44 使用数据源缓存 n...

Global site tag (gtag.js) - Google Analytics