Вопрос по parsing – Что такое умозрительный разбор?

11

Я читал, что Firefox 3.5 имеет новую функциюсинтаксический анализатор ?

Improvements to the Gecko layout engine, including speculative parsing for faster content rendering.

Не могли бы вы объяснить это простыми словами?

Ваш Ответ

2   ответа
25

https: //bugzilla.mozilla.org/show_bug.cgi ID = 364315

В этой записи Андерс Холбёлл предложил:

Кажется, что при обнаружении тега сценария, который ссылается на внешний файл, браузер не пытается загрузить какие-либо элементы после тега сценария, пока не будут загружены внешние файлы сценария. Это замедляет работу сайтов, которые ссылаются на несколько или большие файлы javascript.
...
Здесь будет загружен файл file1.js, а затем файл file2.js. Затем img1.gif, img2.gif и file3.js будут загружены одновременно. Когда file3.js загрузится полностью, будет загружен img3.gif.

Один может утверждать, что, поскольку js-файлы могут содержать, например, строку типа "@&quodocument.write('<!--'); ", нет способа узнать, будет ли когда-либо отображаться какой-либо контент, следующий за тегом скрипта, до того, как скрипт будет выполнен.

Но я бы предположил, что гораздо более вероятно, что контент будет показан, чем нет. И в наши дни страницы часто ссылаются на множество внешних файлов javascript (ajax-библиотеки, статистика и реклама), что при текущем поведении вызывает сериализацию загрузки страницы.

По сути, html-анализатор продолжает чтение html-файла и загрузку ссылок, даже если он заблокирован от рендеринга из-за сценария.

Это называется «спекулятивный», потому что скрипт может делать такие вещи, как установка параметров CSS вроде display: none "или комментируя разделы следующего html-кода, и, таким образом, делая ненужные загрузки certian ... Однако, в случае использования 95%, большинство ссылок будет загружено, поэтому анализатор обычно угадывает правильно.

Samsaffron.com / Архив / 2012/02/17 / стоп-расплата ваш-Jquery налог получил внимание через HackerNews и содержит ссылку на этот вопрос. По крайней мере, так я попал сюда. vinod
Хмм, интересно, что вдруг так привлекло к этому вопросу ... Stobor
Я попал сюда, потому что Stack Overflow - моя газета. Fabrício Matté
Я полагаю, что внешний файл означает любой файл js, загруженный с сервера? emilly
3

это означает, что когда браузер обычно блокирует (например, для тега скрипта), он продолжает анализировать HTML. Он не создаст реальный DOM, пока не будут загружены недостающие фрагменты, но начнет загружать файлы сценариев и таблицы стилей в фоновом режиме.

Похожие вопросы