【问题标题】:Is there conditional caching in ASP.NET?ASP.NET 中有条件缓存吗?
【发布时间】:2009-05-28 18:31:33
【问题描述】:

是否有内置的 asp.net 方式来有条件地提供页面,例如我想要以下逻辑:

如果有我生成的会话数据 一个页面,如果没有会话数据我 提供缓存页面。

我只对了解用于此的内置 asp.net 机制感兴趣。如果它不存在,我可能会简单地手动缓存我的页面,并根据会话数据的可用性决定是否为每个请求提供它。

【问题讨论】:

    标签: asp.net caching


    【解决方案1】:

    我认为没有内置支持(如varyByParam)为具有会话数据的用户生成新的输出。

    正如您所建议的,我建议手动缓存页面。我可能会在Global.asax 中的PreRequestHandlerExecute 事件处理程序中确定用户的会话状态,然后可能会设置:

    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
    

    【讨论】:

      【解决方案2】:

      冒着karmabombing的风险,我真的不喜欢这种缓存方法。

      对我来说,如果发出 GET 请求,那么服务器应该真诚地响应它。页面级别的缓存应该由 http 标头控制,因为主要目标是不获取冗余请求根本 - 您不想完全停止分配服务器/带宽资源。

      缓存对象是构成页面所涉及的资源,我完全可以落后,但我看不到批量缓存页面的好论据。

      尊重标题。

      【讨论】:

      • 技术上的实体标签(HTTP 1.1)可以在这里使用,而不会违背你提到的(我同意)。
      • 当然,HEAD 请求也可以,但这是关于支持 - 我是说这个概念从一开始就有缺陷
      【解决方案3】:

      您可能想查看 .NET 2.0 中的新替换控件 (http://geekswithblogs.net/ranganh/archive/2005/05/04/39003.aspx),但它可能不完全符合您的要求。

      【讨论】:

        猜你喜欢
        • 2011-06-17
        • 2015-08-14
        • 2018-03-11
        • 1970-01-01
        • 2013-10-18
        • 1970-01-01
        • 1970-01-01
        • 2012-03-28
        • 1970-01-01
        相关资源
        最近更新 更多