#javascript #html #browser
Вопрос:
Firefox и Chrome заявили бы, что они предпочитают html или xml-документ при выполнении запроса на страницу, например (из Chrome):
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
и text/css
для <link rel="stylesheet" type="text/css">
того , как:
Accept: text/css,*/*;q=0.1
Но когда дело доходит до <script src>
этого , это становится
Accept: */*
не утверждая application/javascript
, что, несмотря на это, он будет принимать только javascript.
Почему он так себя ведет ?
Комментарии:
1. developer.mozilla.org/en-US/docs/Web/HTML/Element/script#notes говорит использовать
text/javascript
, но отмечает, что блокируются только аудио-и видеоответы, потому что браузеры снисходительны, вероятно, потому, что используется несколько типов контента, и белый список нарушит работу Интернета, в чем пользователи обвинят браузер.2. @дандавис да
text/javascript
илиapplication/javascript
, но это все равно не*/*
так.3. @dandavis И нет ничего плохого в том, чтобы сделать это
Accept: text/javascript, application/javascript, */*;q=0.1
так, как они делают для css.4. Это правда, что в более конкретном заголовке нет никакого вреда, но также верно, что и реальной пользы тоже нет. Имеет смысл различать и отдавать предпочтение определенным медиа-форматам для оптимизации, но сценарий есть сценарий. Учитывая это, зачем ограничивать пакет запроса дополнительной длиной, которая не служит никакой цели для одного из (если не) наиболее распространенных вариантов http-запросов? Это пустая трата времени, пропускной способности, заряда батареи, циклов процессора сервера и т. Д.
5. Браузер знает, что это
<script>
тег, но сервер может и не знать. Тег может ссылаться, скажем, наhttps://deno.land/x/lodash@4.17.19/lodash.js
то, что действительно не является файлом сценария, если вы откроете его в браузере. И в любом случае я не предлагаю этого делать. Я просто спрашиваю, почему нет, так как они уже сделали это для css.
Ответ №1:
Это уменьшает размер заголовка Accept и, таким образом, экономит некоторую пропускную способность, что приводит к повышению производительности.
Смотрите ошибку 170789
Кроме того, это помогает минимизировать ошибки на сайтах, ожидающих заголовков фиксированной максимальной длины.