Я читал, что Firefox 3.5 имеет новую функцию в парсер?
Усовершенствования макета Gecko двигатель, включая спекулятивный синтаксический анализ для более быстрого рендеринга содержимого.
Не могли бы вы объяснить это простыми словами.
Я читал, что Firefox 3.5 имеет новую функцию в парсер?
Усовершенствования макета Gecko двигатель, включая спекулятивный синтаксический анализ для более быстрого рендеринга содержимого.
Не могли бы вы объяснить это простыми словами.
Все это связано с этой записью в bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=364315
В этой записи Андерс Холбёлл предложил:
Кажется, что, столкнувшись с script -tag, ссылающимся на внешний файл, браузер не пытается загрузить какие-либо элементы после script -tag, пока загружаются внешние файлы script. Это делает сайты, ссылающиеся на несколько или большие файлы javascript, медленно.
...
Здесь сначала будет загружен файл file1.js, а затем последовательно file2.js. затем img1.gif, img2.gif и file3.js будут загружаться одновременно. Когда file3.js имеет загружен полностью, img3.gif будет загружен.Можно утверждать, что поскольку js файлы могут содержать, например, строку типа "
document.write('<!--');
", нет никакого способа узнать, содержит ли какой-либо контент после script -tag когда-либо будет показано, до выполнения script.Но я бы предположил, что гораздо более вероятно, что контент будет показан чем нет. И в эти дни довольно часто страницы ссылаются на многие внешние javascript файлы (ajax-библиотеки, статистика и реклама), которые с текущим поведением вызывает сериализацию страницы.
Таким образом, анализатор html продолжает читать через html файл и загружать ссылки, даже если он заблокирован от рендеринга из-за script.
Он называется "умозрительным", потому что script может делать такие вещи, как установка параметров css, таких как "display: none
" или комментирование разделов следующего html, и тем самым сделать ненужным загрузку certian... Однако в 95% -ный прецедент, большинство ссылок будут загружены, поэтому парсер обычно правильно угадывает.
Я думаю, это означает, что когда браузер обычно блокируется (например, для тега script), он будет продолжать анализировать HTML. Он не будет создавать фактическую DOM до тех пор, пока не будут загружены недостающие части, но она начнет извлекать script файлы и таблицы стилей в фоновом режиме.