Кеширование пакетов ASP.NET не очищается после изменений
У меня есть приложение ASP.NET MVC4, которое (я думаю) работает правильно с набором JavaScript и CSS, поскольку оно было впервые опубликовано год назад. В течение этого периода мы опубликовали многочисленные обновления и не обнаружили никаких признаков проблем с доставкой script.
Однако с нашим последним развертыванием кода я заметил, что обслуживаемый JavaScript не обновляется и что параметр запроса, используемый в запросе для пакета script, не изменяется, независимо от изменений в базовом script.
Я попытался восстановить решение в Visual Studio и проверил, что измененные файлы script корректно развернуты на сервере. Я также явно переработал пул приложений IIS и перезапустил сервер, но проблема не устранена.
Любые идеи о том, как диагностировать или исправить эту проблему, пожалуйста?
ОБНОВЛЕНИЕ: Сравнив только промежуточные и производственные серверы, я заметил разницу в поведении. Оба сервера развертываются таким же образом, используя веб-развертывание Visual Studio. Промежуточный сервер правильно и сразу отражает изменения в файлах script, обновляя хеши, которые он использует в URL-адресах, которые ссылаются на пакеты script. Напротив, производственный сервер не может обновить хэши пакетов в ответ на script изменения файлов и/или изменения в составе пакетов script (даже после перезапуска IIS или утилизации пула приложений). Это говорит о том, что проблема изолирована от производственной среды IIS и не связана с моими изменениями кода или конфигурацией Visual Studio.
Ответы
Ответ 1
После большого поиска я в конце концов наткнулся на причину этой проблемы.
Неисправность сервера для обнаружения недавно развернутых изменений в файлах JavaScript была вызвана несколькими аналогично названными мини-версиями этих файлов JavaScript, существующих на сервере. Я предполагаю, что это поведение по дизайну, а именно, что процесс связывания отдает предпочтение существующему миниатюрному файлу и игнорирует эквивалентный un-minified файл, даже если он новее.
Я не могу точно знать, как эти несколько минитипированных файлов попали на сервер, но я полагаю, что они были результатом эксперимента, связанного с альтернативной формой минификсации/группировки. В любом случае простое удаление их позволило механизму связывания увидеть мои развернутые файлы script, и все началось с работы.
Ответ 2
Я думаю, что может возникнуть проблема с зависимостями кеша ASP.NET и файлами только для чтения на диске, можете ли вы проверить, будут ли ваши файлы читать только в вашей среде развертывания?