Я читаю это Как ускорить рендеринг HTML, в котором говорится что скрипты в теге HEAD
можно кэшировать.
Можно ли кэшировать JavaScript в теге BODY
? Если нет, то почему YUI рекомендует размещать скрипты в теге body?
Я читаю это Как ускорить рендеринг HTML, в котором говорится что скрипты в теге HEAD
можно кэшировать.
Можно ли кэшировать JavaScript в теге BODY
? Если нет, то почему YUI рекомендует размещать скрипты в теге body?
Код будет кэшироваться, если вы кэшируете всю HTML-страницу, а не иначе. В наши дни HTML-страницы обычно являются динамическими (генерируются скриптами и CGI), и поэтому их невозможно кэшировать без ущерба для функциональности. Поэтому вы обычно хотите поместить код JS во внешние файлы, которые затем можно кэшировать, установив заголовки кэша HTTP для файла JS.
Ответ, по большей части, заключается в том, что вы не можете кэшировать JavaScript, встроенный в HTML-код (в разделе HEAD или где-либо еще). Чтобы сделать его кэшируемым, вам нужно поместить его во внешний файл, но тогда браузеру нужно будет сделать дополнительный HTTP-запрос, чтобы получить JavaScript в первый раз.
JavaScript будет кэшироваться (и повторно использоваться между страницами), если он находится во внешнем файле и заголовки управления кешем скажите, что это должно быть кэшировано.
Он может быть закэширован, если он встроен в саму страницу (т. е. между <script>
и </script>
, а не в конце src="..."
), но только если кешируется вся страница и ее нельзя будет повторно использовать между страницами.
Для кэширования не имеет значения, находится ли <script src="..."></script>
в голове или в теле.
Приятель, я думаю, ты мог неправильно понять, что сказал Рич. Он сказал, поместите JavaScript во внешний файл и свяжите его с головой.
Это отличается от размещения JavaScript в теге скрипта в теле страницы.
Было бы разумно поместить JavaScript в тег script в теле страницы, если он используется только на этой странице. На самом деле, если бы он использовал только одну эту страницу, размещение ее во внешнем файле не было бы оптимизацией. Дополнительный запрос GET для файла JS будет почти одновременным в Firefox, Opera, Safari, но нет в IE6. Причина в том, что в IE6 всего несколько (2) потоков для загрузки файлов, тогда как в Firefox их до 16. Вот почему наличие отдельного файла для кода страницы было бы шагом назад. потому что это может фактически замедлить загрузку страницы.
Однако, если у вас есть общий файл JavaScript, который вы хотите использовать на многих страницах, вам обязательно следует поместить его во внешний файл и связать его с головой, потому что он будет кэшироваться при первой загрузке любой из этих страниц, и его не нужно будет извлекать снова, когда он используется какой-либо из других страниц. Чем больше файл, тем больше преимущество его кэширования.
Думаю, именно это он и имел в виду. Это помогает?