Время загрузки страницы веб-сайта и поддержка HTTP-соединений

Предыстория: я предпочитаю хранить все свои CSS и Javascript в отдельных файлах .css/.js. (Причина в том, что они используются многими страницами, поэтому статические данные в этом файле не будут передаваться при каждом просмотре страницы). Это приводит к тому, что на некоторых страницах имеется 5-6 операторов «отношение ссылки» или «тип скрипта».

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

Мой вопрос:

1) Запрашивают ли современные браузеры поддерживающие соединения по умолчанию?

2) Если да, то означает ли это, что дополнительный поиск файлов (css/js) не увеличит эффективное время загрузки? Например, предположит ли сервер, что браузер будет запрашивать файлы css/js, и, следовательно, продолжит их отправку (таким образом избегая дополнительного запроса)?

Короче говоря, может ли кто-нибудь объяснить, когда время загрузки НЕ увеличится при наличии отдельных файлов css/js, и если оно всегда увеличивается, то увеличивается ли время загрузки пропорционально количеству включенных файлов?

с уважением,

JP


person Community    schedule 25.11.2010    source источник


Ответы (1)


  1. Да, браузеры, использующие HTTP/1.1, обычно должны использовать поддерживающие соединения.

  2. Сервер не обязательно будет это предполагать; поддержка активности должна означать, что нет отдельного поиска DNS - файл по-прежнему запрашивается.

При правильной настройке вы должны обнаружить (что можно проверить, например, с помощью Firefox+Firebug), что первый запрос генерирует обычную загрузку этих файлов, но последующие запросы генерируют запросы HTTP 304 (файл не изменен), содержимое которых не изменилось с тех пор. последняя загрузка, и поэтому она должна быть доступна из кеша.

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

person Arantor    schedule 25.11.2010
comment
Запросы DNS по-прежнему кэшируются независимо от того, поддерживаются активные соединения или нет. Чего не удается избежать при поддержке активности, так это дополнительных накладных расходов на создание TCP-соединения. Keep-alive также не влияет на кеширование страниц браузера (файл не изменен), я не уверен, почему вы так думаете. - person intgr; 25.11.2010
comment
Пункт 1. Полезно знать. Я также не знал об Expires (но искал что-то подобное). Кроме того, можете ли вы сказать - если я найду 5 файлов css/js со своей главной страницы (все на моем сервере), будут ли эти 5 запросов выполняться последовательно или параллельно? - person ; 25.11.2010
comment
Я полагаю, что конфигурация текущих браузеров по умолчанию заключается в том, чтобы выполнять 2 запроса одновременно. - person Arantor; 25.11.2010
comment
Хорошо... вся эта информация поможет мне выбрать правильную структуру для моих сайтов. спасибо :) - person ; 25.11.2010