ASP.NET HttpModule中的线程安全缓存 下面是一个场景
我有一个ASP.NET4.0应用程序,它有很多旧的URL重写。我想构建一个HTTP模块,它将查看这些重写的数据库,并在需要时执行301重定向。这个表中有成千上万条记录 所以很明显,我需要做一些缓存,这样我就不会访问数据库并搜索每个页面请求的所有记录 我们的一个要求是,当我们的应用程序由于某种原因(工作进程或其他原因)回收时,要有一个快速启动时间。所以我不想在应用程序启动时加载整个表。应用程序的启动速度已经非常慢 我聪明/可笑的想法是ASP.NET HttpModule中的线程安全缓存 下面是一个场景,asp.net,multithreading,caching,thread-safety,httpmodule,Asp.net,Multithreading,Caching,Thread Safety,Httpmodule,我有一个ASP.NET4.0应用程序,它有很多旧的URL重写。我想构建一个HTTP模块,它将查看这些重写的数据库,并在需要时执行301重定向。这个表中有成千上万条记录 所以很明显,我需要做一些缓存,这样我就不会访问数据库并搜索每个页面请求的所有记录 我们的一个要求是,当我们的应用程序由于某种原因(工作进程或其他原因)回收时,要有一个快速启动时间。所以我不想在应用程序启动时加载整个表。应用程序的启动速度已经非常慢 我聪明/可笑的想法是 在我的HttpModule中启动应用程序时,创建一个空字典来保
谢谢 如果您的目标是.NET4.0,那么您可以使用它,它将为您带来并发方面的所有魔力。只需将
GetOrAdd
用于传入请求,将AddOrUpdate
用于您的背景填充
我还想为你们提出一些想法。如果你有成千上万个URL,你真的只在一台服务器上运行吗?我这样问是因为这里只讨论本地缓存方案。如果你有三台服务器,它们都会在数据库中寻找URL数据。您是否正在研究像Windows Server AppFabric或Memcached这样的分布式缓存技术?如果您的目标是.NET 4.0,您可以使用它,它将为您带来并发方面的所有魔力。只需将
GetOrAdd
用于传入请求,将AddOrUpdate
用于您的背景填充
我还想为你们提出一些想法。如果你有成千上万个URL,你真的只在一台服务器上运行吗?我这样问是因为这里只讨论本地缓存方案。如果你有三台服务器,它们都会在数据库中寻找URL数据。您是否正在研究像Windows Server AppFabric或Memcached这样的分布式缓存技术