我在 .NET 9.0 MVC 应用程序中使用 LigerShark WebOptimizer 库(GitHub 链接)。我想启用缓存清除功能,但每次启用都会遇到一些问题。我发现这方面的文档比较少,所以我希望有人能解决这个问题。
设置/代码配置
_ViewImports.cshtml:
@addTagHelper *, WebOptimizer.Core
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
程序.cs:
// Bundling tasks abstracted into static method...
static IAssetPipeline AddBundles(IAssetPipeline pipeline)
{
pipeline.AddJavaScriptBundle("~/bundles/jquery",
"Scripts/jquery-2.1.1.js",
"Scripts/jquery-ui-1.11.4.js",
"Scripts/jquery.unobtrusive-ajax.js",
"Scripts/jquery.ticker.js"
);
return pipeline;
}
// Call to the bundler
services.AddWebOptimizer(pipeline =>
{
AddBundles(pipeline);
}, opt => // I have to explicitly state a default opt...otherwise minification does not work.
{
});
app.UseWebOptimizer();
app.UseStaticFiles();
_Layout.cshtml(所有视图均引用):
<script src="~/bundles/jquery"></script>
问题
- 脚本不再包含在 bundle 中(例如 /bundles/jquery),而是直接被引用。以下是 Firefox 开发者工具的输出:
GET https://localhost:7063/Scripts/jquery-2.1.1.js?v=CPMzgO5SHQa9XMvzKiSCYj6ECb0Edy0rHFl04JXlkY0
GET https://localhost:7063/Scripts/jquery-ui-1.11.4.js?v=R9bDu_ZQj9QsBSatxVF1s40Ckf5e7NJDAg-CYP1ZcZM
- 该框架似乎在当前目录中查找脚本。例如,如果我导航到 https://localhost:7063/Account ,则会发生以下情况:
GET https://localhost:7063/Account/Scripts/jquery-2.1.1.js?v=CPMzgO5SHQa9XMvzKiSCYj6ECb0Edy0rHFl04JXlkY0
GET https://localhost:7063/Account/Scripts/jquery-ui-1.11.4.js?v=R9bDu_ZQj9QsBSatxVF1s40Ckf5e7NJDAg-CYP1ZcZM
(注意帐户子目录)结果(正如预期的那样)是一堆 404 错误,因为我的脚本存在于应用程序根级别。