2

我们希望将我们的应用程序的所有静态内容(js,css,图像 - png,gif,jpeg,jpg)路由到RouteHandler。我们会在哪里做Best Practices for Speeding up Web Sites。就像为我们所有的静态内容添加ETags,Cache Control,Expires等一样。静态内容的RouteHandler

我们该怎么做?

+0

我相当肯定大部分可以用IIS来完成...... – Martin 2012-03-07 13:21:40

+0

@Martin我同意,但有些情况下你需要像图像处理程序需要'ETag'或'If-Modified-由于'但不是用户配置文件图像,因为它们可以更改。 – 2012-03-07 14:14:02

回答

1

你应该真的在IIS中做到这一点。

但是,如果你想完全控制它(虽然找不到一个好理由!),你可以添加一个捕获所有路线作为你的最后一个路线。喜欢的东西:

routes.MapRoute(
    "Static", 
    "{*path}", 
    new { controller = "Home", action = "Static"}); 

动作然后添加到您的控制来处理它:

public ActionResult Static(string path) 
{ 
    //path is everything you get after the/
    //Use Server.MapPath to load it 
    //Add headers to response, etc 
    return File(); 
} 

但是,这是非常糟糕的在我看来。最明显的是从URL获取路径并将其映射到服务器。如果路径是/../../Windows/...,会发生什么情况?可能没什么,但我不喜欢它。