0

我们正在构建一个内部静态资产服务器。每个环境(dev、staging、prod)都有自己的资产服务器,并且资产在整个 Web 应用程序(html、aspx、ascx、css、javascript 等)中都是引用的

要在正确的环境中引用正确的资产服务器,一种解决方案是编写一个 http 模块以在响应到达客户端之前拦截响应并相应地更改 URL。我只是在想这可能不是最具可扩展性的解决方案,因为这个 http 模块将为每个请求执行,并且基本上在客户端得到它之前解析整个响应(有些是巨大的)。

我也在考虑使用客户端 javascript 来更改客户端的引用,但这可能不会像 http 模块那样工作得很好。

有什么想法吗?ASP.NET 中的行业最佳实践是什么?

4

2 回答 2

2

我可能会创建自己的 LinkToStaticAsset 控件。它只接受相对于每个资产的静态资产服务器的路径。我会让它通过包含配置中的基本路径来生成完整的 URL。

于 2009-07-07T21:16:27.230 回答
1

如果您希望您的网站在没有 Javascript 依赖的情况下运行(即使只是部分),那么您应该保留此服务器端。

您上面提到的另一种方法是在应用程序级别执行此操作,即有一个库方法来生成您的静态资产 URL,并配置为通过您的 web.config 指向特定服务器。


它会是这样的: -

(在您的 App_Code 文件夹或引用的程序集中)

public static class Util
{
    public static string AssetUrl(string relativePath)
    {
        // returns asset server address from web config with relative path appended
    }
}

(在 web.config 中)

<appSettings>
    <add key="AssetServerBaseUrl" value="http://foo.bar" />
    ...
</appSettings>

(在您的 aspx 文件中)

<img src='<%= Util.AssetUrl("img/myimage.jpg") %>' ... />
于 2009-07-07T21:14:19.777 回答