Лучшая практика: включить (или <script src="

Я уменьшил свой javascript и мой css.

Теперь, что лучше?

<script type="text/javascript">
<?
  $r = file_get_contents('min.js');
  if($r) echo $r;
?>
</script>

ИЛИ

<script type="text/javascript" src="min.js"></script>

Тот же вопрос для CSS.

Если ответ "иногда, потому что браузеры извлекают файлы одновременно?" Какие браузеры и каковы примеры времени в любом сценарии.

Ответ 1

<script type="text/javascript" src="min.js"></script>

... лучше, так как пользовательский браузер может кэшировать файл.

Добавление параметра в src, например, измененная метка времени файла, еще лучше, так как пользовательский браузер будет кэшировать файл, но всегда будет извлекать самую последнюю версию при изменении файла.

<script type="text/javascript" src="min.js?version=20081007134916"></script>

Ответ 2

Лучше всего использовать файлы javascript и css, так как браузер может кэшировать javascript/css файл. Таким образом, файл загружается только браузером, даже если вы включаете файл на несколько других страниц.

Но это справедливо только в том случае, если вы устанавливаете соответствующий заголовок и/или кеш-контроль для файлов javascript и css через php или Apache mod_expires.

Основываясь на рекомендациях по Исключительной производительности Yahoo, существует только одно исключение:

Единственное исключение, где предпочтительнее встраивание, - это домашние страницы, такие как Yahoo! Главная страница и Мой Yahoo!. Домашние страницы, которые имеют мало (возможно, только одного) просмотра страницы за сеанс, могут обнаружить, что вложение JavaScript и CSS приводит к более быстрому времени отклика конечного пользователя.

Я настоятельно рекомендую вам попробовать Addon "YSlow для Firebug". Он отвечает на множество вопросов о кешировании и работе браузера/клиента.

См. также:

Apache mod_expires

Лучшие рекомендации для ускорения вашего веб-сайта

YSlow

Ответ 3

Помните, что браузер может загружать AT MOST два файла параллельно из того же домена (что по умолчанию в современных браузерах - я уверен в IE6 и IE7, не уверен в других). Это означает, что если ваша страница ссылается на 20 крошечных файлов javascript, многие будут загружаться последовательно.

Чтобы добавить к уже сказанному: помните, что если вы объедините/уменьшите файлы javascript, лучше объединить их все в один - сжатие будет работать лучше. Кроме того, даже если вы не минимизируете свои файлы, не забудьте включить GZIP в конфигурацию вашего веб-сервера; то, если вы объедините все свои JS файлы в один и включите этот файл, сжатие GZIP будет работать лучше всего (потому что сжатие двух файлов JS вместе дает лучшие результаты, чем сжатие каждого отдельно).

Если вы ищете хорошую утилиту для минимизации JS, попробуйте JS Packer (http://dean.edwards.name/packer/)