2013-03-06 96 views
0

是否有可能强制ASP.NET生成来自不同Web应用程序的WebResource.axd/ScriptResource.axd URL的相同散列部分?相同的WebResource.axd/ScriptResource.axd适用于多个应用程序和CDN

例如我有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无法加载和缓存资源。

回答

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和适当的缓存指令。

+0

我不知道,可能是ScriptManager会解决脚本的问题,但在我的情况下资源可以是JS,CSS和图片。 – 2013-03-06 12:34:25

相关问题