Почему location.reload() работает медленнее, чем другие способы перезагрузки страницы?
Несколько месяцев назад я опубликовал этот ответ о том, как обновить страницу с помощью JavaScript.
Я предоставил JSFIDDLE DEMO:
var solutions = [
function () { location.reload(); },
function () { history.go(0); },
function () { location.href = location.href; },
function () { location.href = location.pathname; },
function () { location.replace(location.pathname); },
function () { location.reload(false); },
];
$("[data-func]").on("click", function () {
solutions[parseInt($(this).attr("data-func"))]();
});
Кто-то заметил, что location.reload()
медленнее, чем другие методы. Теперь я вижу то же самое.
Почему он медленнее? Почему другие быстрее?
Ответы
Ответ 1
Я искал это сам, и лучшая ссылка, которую я мог найти, на самом деле на w3schools.com
http://www.w3schools.com/jsref/met_loc_reload.asp
location.reload(forceGet)
forceGet:
false - По умолчанию. Перезагружает текущую страницу из кэша.
true. Текущая страница должна быть перезагружена с сервера
Ответ 2
Из сети разработки Mozilla я полагаю, что метод .reload
может снова получить все файлы с сервера. Это будет похоже на перезагрузку CTRL + F5.
location.href
, например, просто следует за ссылкой, которая может быть кэширована. Что касается определения MDN, поведение не определено четко, поэтому я предполагаю, что его браузер и конкретный случай ведут себя.