Современные альтернативы 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 соответствует стандартам и работает согласованно во всех браузерах.