0

是否可以强制 ASP.NETWebResource.axd / ScriptResource.axd从不同的 Web 应用程序生成 URL 的相同哈希部分?

例如,我有MyControls.dll嵌入资源“ control.js”,它在两个网站中使用:www.site1.com、www.site2.com(MyControls.dll 存在于两个站点的 bin 文件夹中)。对于每个网站,ASP.NET 为“control.js”生成具有不同哈希的 WebResource.axd URL。

问题:我可以以某种方式强制这两个站点的资源 URL 相同吗?

为什么我需要这个……?我对两个网站的资源都使用“共享”CDN。它适用于所有资源,除了WebResource.axd / ScriptResource.axd. 当从 www.site2.com 请求资源时,CDN 尝试从 www.site1.com 检索资源进行缓存,但由于从 www.site2.com 到达的哈希值不同,CDN 无法加载和缓存资源。

4

1 回答 1

0

您可以使用 asp:ScriptManager 来“解绑”资源 - 对于代理缓存来说更好,因为它们不倾向于使用查询字符串来缓存 URL

<asp:ScriptManager ID="Script" runat="server" EnablePartialRendering="true">
  <Scripts>
      <asp:ScriptReference Name="MicrosoftAjax.js" Assembly="System.Web.Extensions" Path="~/js/ms/MicrosoftAjax.js" >
      <asp:ScriptReference Name="MicrosoftAjaxWebForms.js" Assembly="System.Web.Extensions" Path="~/js/ms/MicrosoftAjaxWebForms.js">
  </Scripts>
</asp:ScriptManager>

如果您确实选择了这种方法,请不要忘记启用 gzip 和适当的缓存指令。

于 2013-03-06T11:28:12.347 回答