【问题标题】:Sliding expiration of localized ASP.NET resources本地化 ASP.NET 资源的滑动到期
【发布时间】:2011-09-22 18:48:39
【问题描述】:

假设我们有 2 个站点 myDomain.AU 和 myDomain.RU 具有相同的代码和本地化资源文件 *.resx 和 *.ru.resx。我们预计大多数英语用户将使用 AU 站点,而大多数俄语用户将使用 RU 站点。但是如果AU域的一些用户请求俄语版本,.Ru资源将被加载到AU服务器上并显示俄语。

但我不想保留 .RU 资源直到池回收,但如果没有人使用它们,我想卸载它们。因此,我希望缓存本地化资源的时间到期,并为每种语言配置到期时间。 相关问题已在http://techsoda.wordpress.com/2008/01/04/aspnet-reset-that-resource/http://forums.asp.net/t/1201065.aspx/1 提出

Rick Strahl 在“创建数据驱动的 ASP.NET 本地化资源提供程序和编辑器”(http://www.west-wind.com/presentations/wwdbresourceprovider/) 中有 DbResourceConfiguration.ClearResourceCache() ,清除所有缓存,但不会过期。

欢迎任何建议、参考什么是实现它的最佳方式。

更新:下面 Rick 的评论指出我正在做“过早优化”。 无论如何,如果加载太多资源将成为生产中的问题,那么知道解决方案会很好。

【问题讨论】:

    标签: asp.net caching resources localization


    【解决方案1】:

    为什么不使用静态字典作为资源缓存(如在 Rick Strahl 的示例中),为什么不将单个文化数据存储在 ASP.NET 缓存中,它实现了开箱即用的滑动过期?

    【讨论】:

    • 伟大而简单的想法。我会试试看有没有副作用。
    • 我认为这不是一个好主意,因为除了超时之外,缓存还可以通过多种不同的方式超时。例如,内存压力会导致条目被卸载,特别是像资源字典这样的大条目。如果您在应用程序中使用资源,我建议您接受这些资源会占用一些内存的事实。除非您的应用程序使用大量资源,否则在 ASP.NET 内存使用的大方案中,加载资源不会对您的内存占用有太大影响。
    • 我同意这看起来很少像最佳内存管理策略,但它可能与系统中许多非常很少使用的文化有关。如果需要,也可以使用 CacheItemPriority.NotRemovable 禁用缓存的自动清理。
    猜你喜欢
    • 1970-01-01
    • 2019-01-13
    • 2022-01-22
    • 2012-06-10
    • 2010-10-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多