Я работаю над веб-приложением, которое содержит множество js-скриптов, упакованных в пакеты, используя библиотеку System.Web.Optimization
.Как предварительно генерировать пакеты js вне веб-приложения?
Чтобы уменьшить время отклика для первых пользователей, я готовлю все пакеты в Application_Start
и принудительно добавляю их в кеш. Конечно, это увеличило время Application_Start
взамен.
Мне удалось сохранить результат GenerateBundleResponse()
в файлы, а затем просто загрузить содержимое этих файлов в кеш в Application_Start
, но для этого требуется запустить приложение дважды: первый «холодный» запуск готовит скрипты и сохраняет их в файлы, а второй может использовать подготовленные скрипты и запускаться очень быстро.
public abstract class FileBasedBundle : Bundle
{
public override BundleResponse GenerateBundleResponse(BundleContext context)
{
if (File.Exists(bundlePath))
{
var content = File.ReadAllText(bundlePath);
var fileList = GenerateFileList(context);
return new BundleResponse(content, fileList);
}
var response = base.GenerateBundleResponse(context);
File.WriteAllText(bundlePath, response.Content);
return response;
}
}
Вопрос заключается в том: как я могу подготовить связки в каком-то Util или сценарии для развертывания на удаленных машинах, чтобы не запустить приложение дважды? Существуют ли альтернативы System.Web.Optimization для запуска внешнего контекста веб-приложения? Спасибо!
Спасибо за ваш ответ, это определенно стоит попробовать. – ZuoLi