Force SquishIt для обновления / воссоздания минимизированных файлов
Ищу интеграции SquishIt с нашим веб-приложением. Что я заметил из локального тестирования, так это то, что SquishIt генерирует файл только один раз. Основываясь на других ответах SO и читая код SquishIt, я понял, что генерация файла происходит, если HttpCache не содержит значения сгенерированного хешированного ключа.
Если без перезапуска приложения или без очистки HttpCache, если я удалю сгенерированный минимизированный файл, то SquishIt не воссоздает файл.
Есть ли способ заставить SquishIt воссоздать файл, если он не существует?
Ранее мы использовали RequestReduce и заметили, что он не всегда принимает изменения css/js, если редактируются только файлы css/js (т. Е. Web.config не редактировался и приложение не перезапускалось). Чтобы изменения были приняты, мы всегда удаляем все созданные файлы при развертывании.
Будет ли SquishIt ВСЕГДА обнаруживать измененный код, даже если web.config не был изменен, приложение не перезапускается и HttpCache не очищается?
Код метода [BundleCache.Add] ( https://github.com/jetheredge/SquishIt/blob/master/SquishIt.Framework/BundleCache.cs#L40-54) помогает ответить на этот вопрос.
Могу ли я заставить SquishIt сгенерировать файлы, просто удалив сгенерированные файлы?
Подумав о сценарии, который мне нужен, это неправильный вопрос.
РЕДАКТИРОВАТЬ:
- Какие заголовки кэша отправляются клиенту для этих сгенерированных файлов?
Мой сценарий таков. Я переключился с JS Minifier по умолчанию на JsMinMinifier. После удаления файлов (RenderOnlyIfOutputFileIsMissing
и перезапуск приложения, минифицированные файлы были сгенерированы. Однако они имели то же имя, что и предыдущие файлы (я ошибочно предполагал, что у него будет другое имя).
Обновление моего браузера показало, что вновь созданные файлы были отправлены сервером. Как это случилось? Если для активов был установлен длинный заголовок кэша истечения срока действия, браузер не должен был запрашивать новый файл с сервера. (Осматривая ресурсы в Firebug, я не могу понять политику кеширования. Мне кажется, она настроена на кеширование в течение пары минут).
РЕДАКТИРОВАТЬ 2:
Мой вывод: нет необходимости удалять сгенерированный файл, чтобы вызвать регенерацию. Если соответствующие исходные файлы изменятся, SquishIt создаст соответствующий файл.
1 ответ
Следует - мы добавляем зависимости кеша для исходных файлов (не сгенерированных), поэтому, если одна из них отредактирована, запись в кеш комплекта должна быть признана недействительной. Смотрите BundleCache.Add
Нет - если запись находится в кэше пакета, мы предполагаем, что выходной файл будет там, так что в итоге файл не будет найден. Это сделано специально, мы не слышали убедительных аргументов против этого.
Удаление сгенерированных файлов при развертывании должно быть вполне приемлемым, даже если в этом нет особой необходимости - не нужно ли тогда перезапускать приложение?
Если вы действительно беспокоитесь о сохранении файлов, вы можете рассмотреть возможность использования SquishIt без файловой системы.