Можно ли кэшировать JavaScript, если он находится в теге body HTML-страницы? - PullRequest
0 голосов
/ 25 апреля 2011

Я читаю это Как ускорить рендеринг HTML В нем говорится, что скрипты в теге HEAD можно кэшировать.

Можно ли кэшировать JavaScript в теге BODY?Если нет, то почему YUI рекомендует помещать скрипты в тег body?

Ответы [ 3 ]

3 голосов
/ 25 апреля 2011

JavaScript будет кэшироваться (и повторно использоваться между страницами), если он находится во внешнем файле, а заголовки элемента управления кэшем говорят, что его следует кэшировать.

Он может кэшироваться, если он встроен в саму страницу (то есть между <script> и </script> вместо конца src="..."), но только если вся страница кэшируется и будетне может использоваться повторно между страницами.

Для кэширования не имеет значения, если <script src="..."></script> находится в голове или теле.

1 голос
/ 25 апреля 2011

Код будет кэширован, если вы кэшируете всю HTML-страницу, а не иначе.В наши дни HTML-страницы обычно динамичны (генерируются скриптами и CGI-файлами) и поэтому не могут быть кэшированы без ущерба для функциональности.Поэтому обычно вы хотите разместить код JS во внешних файлах, которые затем можно кэшировать, установив заголовки кэша HTTP для файла JS.

Ответ, по большей части, заключается в том, что вы не можете кэшировать JavaScript, который встроен вHTML-код (в разделе HEAD или иным образом).Чтобы сделать его кешируемым, вам нужно поместить его во внешний файл, но тогда браузер должен будет выполнить дополнительный HTTP-запрос, чтобы получить JavaScript в первый раз.

0 голосов
/ 25 апреля 2011

Мате, я думаю, ты мог неправильно понять, что сказал Рич.Он сказал поместить JavaScript во внешний файл и связать его с головой.

Это в отличие от размещения JavaScript в теге script в теле страницы.

Это будетРазумно поместить JavaScript в тег script в теле страницы, если он используется только на этой странице.Фактически, если бы он использовал только одну страницу, это не было бы оптимизацией, чтобы поместить ее во внешний файл.Дополнительный запрос GET для файла JS будет почти одновременным в Firefox, Opera, Safari, но не в IE6.Причина в том, что в IE6 есть только несколько (2) потоков, которые можно использовать для извлечения файлов, тогда как в Firefox их может быть до 16. Поэтому наличие отдельного файла для кода страницы было бы шагом назад, посколькуна самом деле это может замедлить загрузку страницы.

Если, тем не менее, у вас есть общий файл JavaScript, который вы хотите использовать на многих страницах, вам определенно следует поместить его во внешний файл и связать его с заголовком, посколькуон будет кэширован при первой загрузке любой из этих страниц, и не будет нуждаться в извлечении снова, когда любая из других страниц использует его.Чем больше файл, тем больше преимущество в его кэшировании.

Я думаю, что именно это он и сделал.Это помогает?

...