Обеспечение обновленного CSS / JavaScript на стороне клиента - PullRequest
0 голосов
/ 19 сентября 2009

Я стараюсь, чтобы посетители моего веб-сайта ASP.NET MVC всегда имели самые последние версии CSS и Javascript (а не какую-то более старую кэшированную версию).

Я пытался реализовать это, генерируя начальное значение при запуске домена приложения и автоматически добавляя его к URL-адресам CSS и Javascript (поэтому теперь вместо /Content/All.js ссылка является /Content/All.js? 549238 и т. Д.).

К сожалению, я только что обнаружил при отладке через Firebug, что теперь это вызывает полный запрос на загрузку каждый раз (новый "отобранный" ответ больше не кэшируется вообще , но я Требуется только первая проверка, чтобы загрузить «обновленную» версию, но затем снова кэшировать / только проверять, есть ли разница).

Как мне достичь своей цели, есть ли лучший способ сделать это? Мне нужно, чтобы клиент всегда запрашивал самую новую версию, но затем кэшировал, если не произошло никаких изменений.

Редактировать: Похоже, это связано с тем, что моя страница обслуживается по SSL. Я задал дополнительный вопрос здесь относительно включения кэширования на стороне клиента с помощью SSL.

Ответы [ 3 ]

1 голос
/ 19 сентября 2009

Поместите номер ревизии в URL: foo.css?rev=348

- Правка

Вы также можете достичь этого довольно тривиально, используя свой инструмент для сборки (на самом деле я делаю это с помощью написанного мной).

- Правка

И если он плавает на вашей лодке, это то, что делает SO.

0 голосов
/ 19 сентября 2009
  1. Используйте контрольную сумму содержимого файла в качестве числа, например All-a2a69e19d8628b65cb935708d64d7337.js. Таким образом, число изменяется только при изменении содержимого скрипта.

  2. Создайте некоторый механизм, который отвечает за генерацию ссылки и / или тега <script> на файл JavaScript.

Таким образом, на вашей странице ASP.NET есть что-то вроде:

<asp:ScriptTag source="All.js"/>

Который заменяется на:

<script src="/All-a2a69e19d8628b65cb935708d64d7337.js" type="text/javascript"></script>
0 голосов
/ 19 сентября 2009

Я думаю, что начальное значение, которое вы генерируете, является случайным числом. Замените его номером версии, чтобы его можно было повторно загружать только при изменении номера версии вашего приложения.

Как

/ Содержание / all.js? AppVer1.5

и когда вы изменяете приложение, вы можете изменить его на что-то вроде

/ Содержание / all.js? AppVer1.6

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