У нас был сценарий, когда наш родительский контейнер что-то изменил в интеграции, из-за чего наш компонент делал ненужные запросы, например, 7 вместо 1.

Это было довольно тяжело для серверной части, поэтому мы выпустили исправление, и наша очистка кеша не работала над этим компонентом, поэтому вот результаты, где вы можете увидеть, сколько времени ушло на обновление кода на устройствах пользователей, что не делает ненужным запрос:

Как видите, без очистки кеша большинство пользователей(android, ios, windows также) видели старую версию в течение нескольких дней, и потребовалась почти неделя, чтобы получить обновления для 99% наших пользователей.

Итак, как выполнить очистку кеша?

  • Строки запроса: /code.js?codeVersion=4
  • Строки запроса с датой: /code.js?date=1524392918
  • Строки запроса со случайным образом: /code.js?random=0.2131243144
  • Версия пути к файлу: cdn/code/2.1.1/code.js
  • Версия имени файла: /code.e78a7c3.js

Любое из вышеперечисленного работает в любых браузерах (да, даже в IE).

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

Управление версиями имени файла может быть достигнуто аккуратно с помощью веб-пакета, он может дать вам хороший хэш файла, поэтому он изменяется только при необходимости. Что бы ты не делал,

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