将经常访问的文件放在ASP.NET应用程序中的位置?

时间:2014-07-17 17:09:38

标签: asp.net

我正在编写ASP.NET Web窗体应用程序。

每次请求到达我的aspx页面时,我都会使用一个对象来做一些逻辑。此对象从预先生成的文件中反序列化。

我的aspx页面会有很多请求,因此每次请求进入时我都不想反序列化此对象。因为我记得,ASP.NET将提供不同的请求不同的线程。读取该文件的一个线程将阻止其他线程读取该文件。所以伤害了表现。(但我不确定,如果我错了,请纠正我。)

该文件将每周或每两周更新一次。所以我需要在文件更新后重新反序列化相应的对象。

我的问题是:

  • 我应该在哪里放置代码来从文件中反序列化对象?
  • 如何监控文件更改?

我目前的计划是:

  • 在Application_Start()事件中从文件反序列化对象。并将此对象存储在Cache中。
  • 使用FileSystemWatcher监视包含该文件的文件夹,并在修改文件后更新该对象。

这个设计好吗?有没有更合理的设计?

感谢。

1 个答案:

答案 0 :(得分:0)

将文件存储在App_Data

FileSystemWatcher还可以,但我建议将它作为Windows服务运行。您可以拥有专门用于刷新缓存的页面(例如:www.webpage.com/refreshcache.aspx)。您也可以设置一个调度程序来每晚刷新缓存。