设想:
- 我有一个基于 ASP.NET 3.5 WebForms 的网站。
- 它包含
Foo.aspx,Bar.aspx和baz.html(jQuery 模板)。 - 看到的典型流量是
Foo.aspx(N 次)、Bar.aspx(N 次)和baz.html(10*N 次)。 - ASP.NET 工作进程 (
aspnet_wp.exe) 每 2 小时回收一次。 - 存在一个较旧的 API (
OldFooService.Init()),仅需要为 的第一个请求执行Foo.aspx。为第一个流OldFooService.Init()初始化数据存储,但为后续流触发空白。Cache
问题:
我目前正在做 B(见下文),因为流量Foo.aspx低于第一次后触发空白baz.html。OldFooService.Init()
我应该使用 C 吗?写入Application_State需要锁定 ( MSDN ) 并且不能保证可用,因此不确定它是否值得付出努力。还是有更好的D?
选项:
一)Application_Start在Global.asax
B)Page_Load一次Foo.aspx(通过检查Not IsPostBack)
C) 选项 B + 使用标志在ApplicationState每次循环中运行一次aspnet_wp.exe。