IIS7 ASP.NET MVC Статический кэш файлов JavaScript? - PullRequest
2 голосов
/ 26 января 2012

У меня действительно простой сайт, который я создал.Я пытаюсь проверить JS-кеширование в браузере, но оно не работает.Я думал, что большинство основных браузеров кэшируют ваш файл JS по умолчанию, если имя файла не меняется.У меня локально работает сайт в IIS 7.

Для моего теста у меня есть простой файл JS, который выполняет запись документа при загрузке тела.Если я внесу изменения в файл JS (измените текст, который пишет документ), то сохраню файл, я вижу, что он обновляется при обновлении браузера.Почему это?Разве я не вижу исходный вывод, если имя файла JS не изменилось?

Вот простой сайт , который я создал для тестирования.

1 Ответ

7 голосов
/ 26 января 2012

Когда вы обновляете свой браузер, браузер отправляет запрос на сервер обо всех ресурсах, необходимых для отображения страницы. Если браузер имеет кэшированную версию какого-либо из требуемых ресурсов, он может отправить заголовок If-Modified-Since в запросе для этого ресурса. Когда сервер получает этот заголовок, а не просто обслуживает ресурс, он сравнивает измененное время ресурса со временем, представленным в заголовке If-Modified-Since. Если ресурс изменился, сервер отправит ресурс как обычно со статусом 200. Но если ресурс не изменился, сервер ответит со статусом 304 (Не изменено), и браузер будет использовать его кэшированную версию.

В вашем случае дата изменения изменилась , поэтому браузер отправляет новую версию.

Лучшим способом проверки кэширования в вашем браузере, вероятно, будет использование fiddler и отслеживание запросов и ответов во время навигации по сайту. Не используйте кнопку обновления в своем тестировании, поскольку это часто приводит к тому, что браузер запрашивает свежие копии всех ресурсов (т. Е. Пропускает заголовок If-Modified-Since).

Редактировать: Выше может быть упрощение того, что происходит. Конечно, веб-поиск даст множество глубоких статей, которые могут дать более глубокое понимание того, как работает кэширование браузера в каждом браузере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...