Ресурсы, упомянутые в заголовках ссылок предварительной загрузки, не загружаются предварительно

#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. Да, потому что он предварительно загрузит его как перекрестный источник, а затем должен будет повторно запросить как ресурс, не являющийся перекрестным источником. Хотя я бы подумал, что в этом случае это будет отображаться дважды на вкладке Сеть…