Я уменьшил свой 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.
Если ответ - «иногда из-за того, что браузеры одновременно загружают файлы?» Какие браузеры и каковы примеры случаев в любом сценарии.
<script type = "text/javascript" src = "min.js"></script>
... лучше, поскольку браузер пользователя может кэшировать файл.
Добавление параметра в src
, такого как временная метка последнего изменения файла, еще лучше, поскольку браузер пользователя будет кэшировать файл, но всегда будет извлекать самую последнюю версию при изменении файла.
<script type = "text/javascript" src = "min.js?version=20081007134916"></script>
При 20-60% пользователей, имеющих пустой кеш, что лучше: меньше HTTP-запросов или кешированных результатов?
Разве браузеры не должны получать эту информацию из заголовков HTTP?
Исаак - ключевая фраза; «должен». Довольно часто кеширование js файлов очень агрессивное.
Кроме того, это лучшая практика, потому что она позволяет исключить логику поведения из логики представления. Если это не HTML, то он не принадлежит файлу .html.
Том, когда ты программируешь, это прекрасно, но твои HTML-файлы сборки предназначены для чтения браузером, а не программистом. Если вы делаете что-то, чтобы люди читали и интерпретировали, вы никогда бы не уменьшили это в первую очередь.
@Isaac Вы совершенно правы - я неправильно прочитал вопрос. Моя вина в этом.
«При 20-60% пользователей с пустым кешем» - это означает, что 40-80% не имеют пустой кеш.
Вы не должны использовать ревизию строки запроса. Некоторые кэширующие прокси никогда не кэшируют запросы со строкой запроса: stevesouders.com/blog/2008/08/23/…
В большинстве случаев лучше включать файлы javascript и css, потому что таким образом браузер может кэшировать файл javascript / css. Таким образом, файл загружается браузером только один раз, даже если вы включаете файл на несколько других страниц.
Но это верно только в том случае, если вы установите соответствующий заголовок expires и / или cache-control для файлов javascript и css через php или Apache mod_expires.
На основании рекомендаций Yahoo Exceptional Performance есть только одно исключение:
The only exception where inlining is preferable is with home pages, such as Yahoo!'s front page and My Yahoo!. Home pages that have few (perhaps only one) page view per session may find that inlining JavaScript and CSS results in faster end-user response times.
Я настоятельно рекомендую вам попробовать аддон «YSlow for Firebug». Он отвечает на множество вопросов о кешировании и производительности браузера / клиента.
Смотрите также:
Помните, что браузер может загружать СОВЕРШЕННО два файла параллельно из одного домена (это значение по умолчанию в современных браузерах - я уверен в IE6 и IE7, но не в других). Это означает, что если ваша страница ссылается на 20 крошечных файлов javascript, многие из них будут загружены последовательно.
Чтобы добавить к тому, что уже было сказано: помните, что если вы объедините / уменьшите свои файлы javascript, лучше объединить их все в один - сжатие будет работать лучше. Кроме того, даже если вы не минимизируете свои файлы, не забудьте включить GZIP в конфигурации вашего веб-сервера; затем, если вы объедините все свои файлы JS в один и включите этот файл как, сжатие GZIP будет работать лучше всего (поскольку сжатие двух файлов JS вместе дает лучшие результаты, чем сжатие каждого из них по отдельности).
Если вы ищете хорошую утилиту для минификации JS, попробуйте JS Packer (http://dean.edwards.name/packer/)
Пока вы используете gzip, Packer контрпродуктивен. JSMin, YUI Compressor и Packer имеют почти одинаковые габариты gzip, но Packer вводит задержку на стороне клиента, так как eval () 'd. Packer отлично подходит, если вам нужна обфускация.
Это неверно помечено как "http".