【问题标题】:General Q's: How does a cache work with the server in ASP.NET?一般问题:缓存如何与 ASP.NET 中的服务器一起使用?
【发布时间】:2011-04-01 01:28:53
【问题描述】:

我正在尝试了解 asp.net 中的缓存,但无法理解本文 (http://msdn.microsoft.com/en-us/library/18c1wd61%28v=vs.71%29.aspx) 中的以下问题:

  1. 在将项目添加到缓存时,我知道您可以指定数据保留多长时间的时间限制。但是,此数据是否仅针对该用户保留,或者,如果另一个用户同时访问同一页面,此数据是否也会针对该用户保留?
  2. 如果将数据添加到缓存中,它究竟驻留在哪里?它是在服务器上还是在用户的浏览器上?如果在服务器上,框架如何决定何时需要释放资源?

【问题讨论】:

    标签: asp.net caching


    【解决方案1】:

    ASP .NET 提供了几种缓存形式,该页面上展示的形式是(任意)数据缓存(使用 Cache 对象)。所以回答你的问题:

    1.) 使用此方法缓存的数据可供所有用户使用(以线程安全的方式)。但如果您需要存储特定于用户的数据,请改用会话状态。

    2.) 数据被缓存在服务器端,并在发生以下任何情况时释放:

    • 根据调用者明确设置的过期时间,它变得陈旧
    • 缓存数据所依赖的资源之一被更改
    • 或者服务器只需要更多内存(与其他缓存数据相比,数据的缓存优先级相对较低)

    【讨论】:

    • @Nathan 谢谢。所以为了确定,这意味着如果我试图生成一个类似 wiki 的页面(每隔一天刷新一次数据),这个方法可以工作吗?
    • 我可能会在这种情况下使用输出缓存。数据缓存允许您在代码中存储和检索任意对象,而输出缓存缓存发送给用户的最终 HTML。这使得它非常高效,因为它绕过了整个 ASP .NET 页面模型并简单地将页面提供给用户。当您拥有对每个用户都应该相同的公共页面(尤其是如果它们包含静态内容时)时,这是合适的。
    • 这个页面有一些动态内容。我听说如果它有动态内容,那么最好使用数据缓存。你怎么看?这是我实际上试图解决的问题,并想知道缓存是否是更好的选择stackoverflow.com/questions/5505993/…
    • 哦,好的,所以您想要缓存从第三方提供商处获得的数据,但您不太关心缓存其他内容?在这种情况下,简单地使用数据缓存可能会更容易。如果您想在页面中缓存第三方数据和其他静态内容,这可能会使事情变得更加复杂,您可能需要查看其他片段/自定义缓存方案。
    • 那么您认为数据缓存可能适用于存储第 3 方数据吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 2012-03-28
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    相关资源
    最近更新 更多