12k
All articles

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

Флаг forceGet устарел; параметры запроса с временной меткой позволяют перезагружать страницы в соответствии со стандартами во всех браузерах.

OpenReplay Team
OpenReplay Team
Современные альтернативы 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

Устарел ли `location.reload(true)` во всех браузерах?

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

Как принудительно перезагрузить страницу в одностраничном приложении (SPA)?

В 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

We use cookies to improve your experience. By using our site, you accept cookies.