设想:
- 我有一个基于 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
。