加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

经典ASP(或PHP等)中的ASP.NET MVC包

发布时间:2020-12-16 03:53:29 所属栏目:asp.Net 来源:网络整理
导读:我们有混合应用程序,它仍然运行ASP.NET MVC中的经典ASP应用程序的一部分.我想在经典ASP中也使用捆绑的 javascript和样式. 在ASP.NET中,我们可以很好地使用捆绑的东西和缓存,我们使用Script.Render,它将版本哈希添加到fetch url. 事实上,这种方法当然不适用于
我们有混合应用程序,它仍然运行ASP.NET MVC中的经典ASP应用程序的一部分.我想在经典ASP中也使用捆绑的 javascript和样式.

在ASP.NET中,我们可以很好地使用捆绑的东西和缓存,我们使用Script.Render,它将版本哈希添加到fetch url.

事实上,这种方法当然不适用于Classic ASP.

我们可以直接从html< script src =“bundles / js?v =<%= version%>”/>使用捆绑. version变量是缓存清除中使用的经典ASP变量(强制浏览器刷新).它在版本之间进行了更改.

问题是如果经典ASP没有给捆绑请求提供正确的哈希,MVC捆绑将返回头缓存:no-caching,这将指示浏览器不缓存它.

你有什么好主意吗?可以在经典ASP中计算哈希吗?你能告诉捆绑在没有v = hash的情况下允许缓存吗?可以在启动时从MVC传输v = hash吗?我们有在Classic ASP和MVC之间传输变量的机制,但是这种哈希是从MVC启动代码可以达到的.

解决方法

AardVark狂野的想法给了我一些想法,我自己想出来了.解决方案本身很简单.

以下是可能需要类似解决方案的任何人的解决方案.

在ASP.NET MVC(Global.asax.cs或BundleConfig)中注册捆绑包后:

List<string> bundleHtml = new List<string>();
        bundleHtml.Add(Scripts.Render("~/bundles/legacybase").ToString());
        bundleHtml.Add(Styles.Render("~/styles/legacycss").ToString());
        File.WriteAllLines(Server.MapPath("~/dyn_legacy_bundle.inc"),bundleHtml,System.Text.Encoding.UTF8);

这将生成文件dyn_legacy_bundle.inc,其中包含正确的< script> -tags,其中包含版本哈希(如果启用了调试,则为调试版本).

在经典ASP(或一些变态的PHP等):

<head>
   <!--#include file="dyn_legacy_bundle.inc" -->
</head>

然后,这将使用ASP.NET启动时生成的文件,并使用捆绑的css / javascript.

否定的是,如果在运行时更改了捆绑文件,则不会更新此动态文件.这将导致捆绑不被缓存.应用程序池回收最终将修复缓存,所以我认为我们将继续使用它.如果你想办法避免这种情况,请告诉我.

请注意,这也适用于任何其他框架(即PHP)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读