Back

Современные альтернативы javascript:location.reload(true): Как принудительно перезагрузить страницу в JavaScript

Современные альтернативы javascript:location.reload(true): Как принудительно перезагрузить страницу в JavaScript

Вы все еще используете location.reload(true) в JavaScript для принудительной перезагрузки страницы? Хотя этот метод работает в некоторых браузерах, параметр forceGet устарел и не является частью веб-стандартов. В этом кратком руководстве мы рассмотрим современные кроссбраузерные альтернативы javascript:location.reload(true) для обновления веб-страницы и обхода кэша.

Ключевые выводы

  • location.reload(true) устарел. Используйте альтернативные кроссбраузерные методы
  • Добавьте уникальный параметр запроса, чтобы принудительно перезагрузить страницу и обойти кэш
  • window.location.reload() без аргументов - стандартный метод перезагрузки
  • По возможности избегайте перезагрузки страниц для лучшей производительности и UX

Понимание location.reload()

Метод location.reload() перезагружает текущий URL, подобно кнопке Обновить в браузере. Он имеет необязательный параметр forceGet (по умолчанию false), который при значении true обходит кэш и перезагружает страницу с сервера. Однако этот параметр не является стандартным и поддерживается только в Firefox.

Почему location.reload(true) устарел

Флаг forceGet в location.reload(true) устарел, потому что:

  • Он не является частью спецификации HTML
  • Он поддерживается только в Firefox, что приводит к несогласованности между браузерами
  • Существуют более надежные и стандартизированные способы принудительной перезагрузки

Современные методы принудительной перезагрузки страницы

Вот текущие кроссбраузерные методы перезагрузки страницы без использования location.reload(true):

1. Добавление параметра запроса с меткой времени

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

window.location.href = window.location.href + '?timestamp=' + new Date().getTime()

2. Использование window.location.reload() без forceGet

Просто вызовите reload() без каких-либо аргументов. Хотя это не гарантирует обход кэша, это стандартный кроссбраузерный способ:

window.location.reload()

3. Использование присвоения window.location.href

Присвойте window.location.href самому себе для перезагрузки:

window.location.href = window.location.href

Однако это добавляет новую запись в историю. Чтобы избежать этого, используйте window.location.replace():

window.location.replace(window.location.href)

Лучшие практики для перезагрузки страницы

  • По возможности избегайте перезагрузки. Обновляйте контент динамически с помощью AJAX или используйте фреймворк SPA
  • Если вам необходимо перезагрузить страницу, используйте стандартные методы, такие как добавление параметра запроса
  • Учитывайте влияние перезагрузки на производительность и UX
  • Остерегайтесь бесконечных циклов перезагрузки

FAQs

Параметр `forceGet` в `location.reload(true)` не является стандартным и игнорируется в большинстве браузеров. Он поддерживается только в Firefox, но все равно считается устаревшим.

В SPA, как правило, лучше обновлять данные динамически, а не перезагружать страницу. Однако, при необходимости, вы можете использовать History API для манипулирования URL и обмана приложения для перезагрузки.

Заключение

Понимая, почему javascript:location.reload(true) устарел, и используя современные альтернативы, такие как добавление параметров запроса или window.location.reload(), вы можете гарантировать, что ваш код JavaScript соответствует стандартам и работает согласованно во всех браузерах.

Listen to your bugs 🧘, with OpenReplay

See how users use your app and resolve issues fast.
Loved by thousands of developers