#http #preload #web-performance
#http #предварительная нагрузка #веб-производительность #предварительная загрузка
Вопрос:
Я пытаюсь сгладить некоторые водопады для веб-сервиса. В настоящее время я вижу этот уродливый шаблон:
document: WWWWWWWWDDDDD
resource: WWWWWWWWWDDDDD
resource: WWWWWWWWWDDDDD
W = Waiting (TTFB)
D = Content Download
Чтобы несколько сгладить это, я пытаюсь ускорить загрузку вспомогательных ресурсов. Для этого я использую Link
заголовок и заполняю его директивами предварительной загрузки. Кроме того, я очищаю заголовки перед отправкой содержимого. Как я понял, это должно позволить обнаружить предварительные загрузки в первом полученном фрагменте байтов, прежде чем ждать загрузки всего документа. Пример Link
заголовка:
link: <https://some.domain.com/foo.min.js>; rel=preload; as=script; crossorigin,<//some.other.com/script.js>; rel=preload; as=script; crossorigin
Я почти уверен, что браузер видит эти ссылки, потому что он жаловался до того, как я исправил все эти атрибуты, например crossorigin
. Однако каскад остается таким же, как и раньше; ни один из подресурсов, настроенных на предварительную загрузку, не загружается до тех пор, пока не будет загружен весь документ. Я бы ожидал чего-то большего, подобного этому:
document: WWWWWWWWDDDDD
resource: WWWWWWWWWDDDDD
resource: WWWWWWWWWDDDDD
Что приводит к игнорированию Chrome заголовка ссылки?
Комментарии:
1. Вам не должны понадобиться
crossorigin
запросы к скрипту on (если только они не загружаются через JavaScript XHR вместо<script>
тега?). Какую ошибку вы видели перед добавлением этого атрибута?2. @BarryPollard, я мог бы попробовать удалить их. Мои ссылки также содержат некоторые шрифты, для которых требуется crossorigin, поэтому я повсеместно добавил
crossorigin
ко всему. Думаете, это будет блокировать предзагрузки?3. Да, потому что он предварительно загрузит его как перекрестный источник, а затем должен будет повторно запросить как ресурс, не являющийся перекрестным источником. Хотя я бы подумал, что в этом случае это будет отображаться дважды на вкладке Сеть…