Имеет ли значение уменьшение количества http-запросов, если они кэшируются?

У меня есть около 10 ссылок на файлы CSS и JavaScript (JS) на моем веб-сайте, и я могу их комбинировать, чтобы клиент веб-браузера мог загрузить только 2 файла CSS и JS. Объединение файлов уменьшит количество HTTP-запросов и сократит время загрузки страницы.

Мой вопрос: если эти 10 файлов CSS и JS кэшируются после загрузки первой страницы, будет ли время загрузки второй страницы таким же быстрым, как страница, на которой есть только 2 комбинированных файла CSS и JS? Я бы так подумал, потому что кешированные файлы не требуют HTTP-запроса. Я понимаю, что существуют командные сценарии, которые могут автоматизировать объединение файлов CSS и JS для развертывания, но это усложнит будущим младшим программистам/веб-дизайнерам, которые могут работать на веб-сайте. Веб-сайт предназначен для благотворительной организации, и там очень мало контроля и доступных человеческих ресурсов, чтобы держать все под контролем и в порядке.

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


person burnt1ce    schedule 14.01.2012    source источник


Ответы (3)


Да, вы должны уменьшить количество запросов, даже если ресурсы кэшируются. Две причины:

1. Небольшое снижение производительности (на файл) даже для кэшированных файлов

Если вы профилируете свой веб-сайт, вы увидите, что для каждого ресурса по-прежнему выполняется обращение к серверу. Если ресурс не был обновлен, сервер вернет код состояния HTTP 304 - Not Modified, в противном случае он вернет код состояния HTTP 200 (и сам ресурс).

Вот пример трассировки, полученный путем профилирования CSS-файлов домашней страницы Stack Overflow:

введите здесь описание изображения

Как видите, несмотря на то, что файл CSS кэширован, был сделан запрос, чтобы убедиться, что кэшированная версия актуальна.

2. Эта оптимизация также принесет пользу новым посетителям.

Это улучшит скорость загрузки страницы для новых посетителей и тех, у кого устаревший кеш.

person Arnold Zokas    schedule 14.01.2012
comment
сервер вернет код состояния HTTP 304 — Not Modified. Небольшая поправка. Все это делает браузер, а не сервер. Вы можете попробовать это с браузером, в котором отключен кеш. В этом случае сервер всегда будет возвращать 200 - OK. Так что на самом деле сервер всегда возвращает 200. За исключением некоторых случаев, конечно. - person Cyberon; 15.01.2012

Да, вы должны, браузеры получат размер содержимого, чтобы определить, был ли файл изменен или нет. Поэтому независимо от того, кэшировал ли браузер его уже, он всегда будет отправлять HTTP-запросы.

person Cyberon    schedule 14.01.2012

Это правда, что как только файлы загружены и кэшированы, не имеет значения, на сколько файлов разбиты css и js, скорости будут одинаковыми.

Конечно, каждый раз, когда пользователь очищает свой кеш, 10 файлов будут обслуживаться снова, что вызовет больше HTTP-запросов.

В общем, лучше иметь на сервере как можно меньше файлов, особенно когда ваш сайт посещает большое количество пользователей. Всякий раз, когда вы можете сэкономить на HTTP-запросах, вы должны это делать.

person Darcy    schedule 14.01.2012