我们正在构建一个内部静态资产服务器。每个环境(dev,staging,prod)都有自己的资产服务器,资产是整个Web应用程序的引用(html,aspx,ascx,css,javascript等......)
要在正确的环境中引用正确的资产服务器,一种解决方案是编写一个http模块来拦截响应,然后才能到达客户端并根据需要更改URL。我只是认为这可能不是最具扩展性的解决方案,因为这个http模块将针对每个请求执行,并且在客户端获取之前基本上解析整个响应(有些是巨大的)。
我也在考虑使用客户端javascript来更改客户端的引用,但这可能不适用于http模块。
有什么想法? ASP.NET中的行业最佳实践是什么?
答案 0 :(得分:2)
我可能会创建自己的LinkToStaticAsset控件。它只接受相对于每个资产的静态资产服务器的路径。我希望它通过包含配置的基本路径来生成完整的URL。
答案 1 :(得分:1)
如果您希望您的网站在没有Javascript依赖关系的情况下运行(即使只是部分),那么您应该保留此服务器端。
上面提到的另一种方法是在应用程序级别执行此操作,即使用库方法生成静态资产URL并配置为通过web.config指向特定服务器。 / p>
它会是这样的: -
(在您的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") %>' ... />