Когда пакет зарегистрирован в MVC4, что отвечает за «перехват» входящих http
запросов на /bundles/someBundle?v=1hDzBpmYJm4Iu-OjRN1YqS1WeNThVl0kStLJGP8WCr41
? также поскольку хэш для каждого пучка вычисляется только один раз (при первом запросе), где в том, что на самом деле состоялось, - и можно вернуть 404
если входящий хэш не соответствуетMVC4 Объединение: где хранится URL для пакета
ответ
, что несет ответственность за " перехватывая "входящие http-запросы для ~/bundles/someBundle
~/bundles/someBundle
0 0 нет. Это помощник на стороне сервера, который вы используете (Scripts.Render
), который на сервере (в рамках тех же HTTP-запросов) интерпретирует это значение и выплескивает правильный URL-адрес в результате HTML.
также, так как хэш для каждого пучка вычисляется только один раз (при первом запросе), где на самом деле, что состоялось,
Фактическое содержание пучка хранится в кэше на стороне сервера: HttpContext.Cache
. Фактический хеш представляет собой хэш SHA256 на этом контенте, который рассчитывается каждый раз, когда вы используете вспомогательный помощник Scripts.Render
.
UPDATE:
Это System.Web.Optimization.BundleModule
что автоматически регистрируется, когда вы ссылаетесь на сборку System.Web.Optimization, который отвечает за перехват запросов к URL-адресам, как /bundles/someBundle?v=1hDzBpmYJm4Iu-OjRN1YqS1WeNThVl0kStLJGP8WCr41
и возвращает фактическое содержимое.
спасибо, так что отвечает за перехват запроса этого «правильного URL» в полученном HTML (я обновил свой вопрос для большей ясности) –
О, я вижу. Я обновил свой ответ. –
Возможно ли вставить BundleModule, чтобы добавить желаемое поведение? –
У вас должен быть файл BundleConfig.cs в папке App_Start в вашем веб-проекте.
Этот раздел в основном связывает URL-адрес "/ bundles/something" с некоторыми скриптами. Когда при доступе к сайту в режиме Release (не отладка активирована), он автоматически объединяет скрипт в один файл в памяти, сводит к минимуму скрипт, добавляет заголовки кэширования в запрос и генерирует хэш содержимого файла.
Если вы находитесь в отладке, все сценарии должны быть разделены, чтобы облегчить отладку.
Вы либо переопределяете пакеты, которые видите в этом файле, либо объявляете свои собственные.
Наслаждайтесь.
Причина добавления строки запроса с параметром, основанным на содержимом фактических файлов, которые вы обслуживаете, является решением проблемы кэширования. Кроме того, вы можете информировать браузеры о необходимости кэшировать эти запросы в течение длительного периода времени и ускорять последующие загрузки страниц.
Так что для разработчиков этого механизма связывания нет разницы в том, что этот параметр. Важно только то, что если вы измените содержимое своих скриптов или css-hash изменится, и это заставит клиентский браузер запрашивать новые файлы с сервера.
Что касается того, что отвечает за пересечение этих запросов - есть исходный код MVC, доступный на codeplex, но я предполагаю, что он подключается прямо к маршрутизации.
В чем проблема, которую вы пытаетесь решить? – CodeCaster
@CodeCaster Мне нужно 404 запросов со старыми/устаревшими хэшами –
Не делает ли этот пакет ASP.NET MVC автоматически? – CodeCaster