我在II7和Windows 2008 Server上运行ASP.NET MVC 1.0应用程序(.NET 3.5)。 该应用程序以“集成管道”模式部署。
在Global.asax.cs中我添加了:
public void Application_EndRequest(Object sender, EventArgs e) {
//print URL
}
即使对于/ Content和/ Scripts文件夹中的静态内容(images,css,js),也会调用该方法。 这是正确的吗?
MSDN(http://msdn.microsoft.com/en-us/library/bb470252.aspx)说:
"The Execute handler stage, where the handler (a module scoped to a URL) is invoked to construct the response. For .aspx files, the PageHandlerFactory handler is used to respond to the request.
For static files, the native-code StaticFileModule module responds to the request. "
应该为静态内容调用Application_EndRequest()吗?
如何确保浏览器缓存静态内容?
谢谢。
答案 0 :(得分:1)
由于MVC中引入了路由功能,现在通过ASP.NET处理所有内容,因此将为每个请求调用Application_EndRequest。浏览器无法看到静态或动态内容之间的差异,并会尝试根据HTTP标头缓存内容。
答案 1 :(得分:1)
虽然ASP MVC默认模板不鼓励我,但我认为将所有网站的静态内容放在一个目录中是一种推荐的做法。然后,您可以禁用所述目录的ASP管道,并允许IIS在不将请求传递给ASP.NET的情况下提供内容。
此练习已在Steve Sanderson和Kazi Manzur Rashid's博客上撰写。在ASP.NET MVC in Action中也建议使用它。