Сохранение значения в js при перезагрузке страницы

Я искал здесь ответ и обнаружил, что это можно сделать с помощью веб-хранилища и файлов cookie. Однако я также наткнулся на этот интересный пост:

Парсируют ли браузеры javascript при каждой загрузке страницы?

В нем говорится: «Chrome 42 представляет продвинутую технику хранения локальной копии скомпилированного кода, так что, когда пользователь возвращается на страницу, шаги загрузки, синтаксического анализа и компиляции могут быть пропущены. При любой загрузке страницы это позволяет Chrome чтобы избежать около 40% времени компиляции и сэкономить драгоценную батарею на мобильных устройствах ».

Означает ли это, что значения переменных будут постоянными при перезагрузке страницы? Например, если я сохраняю цвет, выбранный пользователем, в переменной, будет ли это значение доступно в этой переменной после загрузки другой страницы (в том же домене)?

P.S: Я не мог там комментировать, так как я новичок и у меня недостаточно репутации, необходимой для комментирования ответов.


person darKnight    schedule 06.04.2015    source источник


Ответы (1)


Нет, это не означает, что переменные сохраняются или что HTML внезапно имеет состояние, это только означает, что Chrome хранит проанализированные скрипты внутри себя, поэтому их не нужно загружать и анализировать снова.

Это просто внутренняя оптимизация для ускорения работы Chrome, а не то, к чему у вас есть доступ, вам все равно понадобится постоянное хранилище, такое как файлы cookie, локальное хранилище или сервер.

person adeneo    schedule 06.04.2015
comment
Спасибо за Ваш ответ. Еще несколько вопросов: синтаксический анализ - это то же самое, что рендеринг / управление деревом DOM с помощью JS? Если да, то как браузер может использовать один и тот же предварительно проанализированный JS для разных страниц? (поскольку DOM реконструируется при каждой загрузке страницы) Если нет, то любезно объясните, как разбор ч / б и рендеринг выполняется. Кроме того, где значения переменных хранятся в браузере? Прикреплен ли он к дереву DOM или есть отдельная область памяти, зарезервированная браузером для JS? (Здесь я не имею в виду сохранение свойств элементов HTML, таких как цвет, которые могут быть изменены JS и которые являются частью дерева DOM) - person darKnight; 06.04.2015
comment
Это очень технический вопрос, но разбор скрипта - это не то же самое, что рендеринг, браузер обычно имеет движок javascript и движок рендеринга, которые работают вместе. Мне сложно понять, как именно Chrome делает эти вещи внутренне, но он хранит скрипты и, возможно, некоторые данные, чтобы узнать, каков был результат синтаксического анализа, поэтому ему не нужно делать это снова. При первой загрузке страницы синтаксический анализ скрипта, как правило, всегда будет одинаковым, модель DOM такая же и т. Д. Переменные хранятся в памяти, и, поскольку HTML не имеет состояния, память освобождается при новой загрузке страницы. - person adeneo; 06.04.2015
comment
Таким образом, все, что делается с помощью javascript, всегда теряется при перезагрузке страницы или перенаправлении на другую страницу, состояния нет. Файлы cookie, локальное хранилище и т. Д. - единственный способ хранить данные при загрузке страницы. - person adeneo; 06.04.2015