Estou usando a biblioteca LigerShark WebOptimizer ( link do GitHub ) em uma aplicação .NET 9.0 MVC. Quero habilitar o cache busting, mas sempre que faço isso, encontro algumas dificuldades. Acho que a documentação é deficiente nesse aspecto, então espero que alguém por aí consiga fazer isso funcionar.
Configuração/configuração de código
_ViewImports.cshtml:
@addTagHelper *, WebOptimizer.Core
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
Programa.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 (referenciado em todas as visualizações):
<script src="~/bundles/jquery"></script>
Problemas
- Os scripts não estão mais em um pacote (por exemplo, /bundles/jquery), mas são referenciados diretamente. Aqui está a saída do Firefox Developer Tools:
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
- O framework parece procurar os scripts no diretório atual. Por exemplo, se eu navegar para https://localhost:7063/Account, acontece o seguinte:
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
(Observe o subdiretório Conta ) O resultado (como esperado) é um monte de erros 404, pois meus scripts existem no nível raiz do aplicativo.