Как ускорить загрузку веб-страницы?главная проблема - время очереди - PullRequest
1 голос
/ 27 июня 2011

Я работал над моей личной страницей, основанной на drupal.Я заметил, что загрузка занимает 6-10 секунд часто.

После просмотра некоторых тестов производительности, в частности, с сайта site-perf.com, я заметил, что время загрузки составляет 80% времени очереди.enter image description here

Кажется, что lightbox2 и моя тема занимают около 2/3 времени очереди.

Есть предложения по ускорению?

Ответы [ 3 ]

2 голосов
/ 27 июня 2011

Когда вы добавляете javascripts на свои страницы (например, лайтбоксы или любые другие надстройки), не забудьте отложить их разбор, добавив их внизу страницы вместо добавления их в заголовок.

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

Я также заметил, что включены 8 js-файлов (и тонна CSS-файлов), вы можете сократить время рендеринга, поместив код всех этих javascript-скриптов в один js-файл (и весь CSS-файл водин файл) и включите только этот.

Примечание. Не забудьте сохранить CSS в заголовке страницы, так как это необходимо для правильной визуализации веб-страницы.

1 голос
/ 27 июня 2011

Не забудьте кэшировать и сжать ваши файлы в файле .htaccess в вашем корневом каталоге. Если его нет, создайте его, а затем добавьте этот фрагмент:

#GZIP ----------------------------
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
<ifModule mod_gzip.c>
  mod_gzip_on Yes
  mod_gzip_dechunk Yes
  mod_gzip_item_include file \.(html?|txt|css|js)$
  mod_gzip_item_include handler ^cgi-script$
  mod_gzip_item_include mime ^text/.*
  mod_gzip_item_include mime ^application/x-javascript.*
  mod_gzip_item_exclude mime ^image/.*
  mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
<ifmodule mod_php4.c>
php_value zlib.output_compression 16386
</ifmodule>

#CACHE ----------------------------
<ifModule mod_headers.c>
    # MONTH
    <FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
    # WEEK
    <FilesMatch "\.(js|css|pdf|txt|mp4|m4v|ogv|webm|ogg)$">
        Header set Cache-Control "max-age=604800"
    </FilesMatch>
    # DAY
    <FilesMatch "\.(html|htm)$">
        Header set Cache-Control "max-age=43200"
    </FilesMatch>
    # NEVER CACHE
    <FilesMatch "\.(pl|php|cgi|spl)$">
        Header set Cache-Control "max-age=0"
    </FilesMatch>
</ifModule>

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

1 голос
/ 27 июня 2011

Цитирование из упомянутого http://site -perf.com / веб-сайт:

Запрос в очереди

Обычно браузеры не начинают обрабатыватьhttp-запрос, как только он ставится в очередь, предотвращая перегрузку веб-серверов.Для каждого хоста существует ограничение одновременных подключений и общее ограничение всех подключений.Эти ограничения варьируются от браузера к браузеру, и сегодня это общие значения 8-10 параллельных запросов на хост и всего 32-128.

Подсказка: если вы видите, что многие запросы проводят большую часть своего времени в очереди браузера,Вы можете увеличить количество хостов, которые будут обслуживать эти запросы.Вы даже можете создавать псевдонимы доменов, которые указывают на один и тот же IP-адрес и обслуживаются из одного и того же каталога, поскольку браузеры при применении ограничений на подключение смотрят только на доменные имена, а не на их IP-адреса.Но помните, что каждый дополнительный домен будет добавлять соответствующие задержки разрешения и подключения, так что 3-6 таких псевдонимов вполне достаточно.

Вы можете попробовать что-то вроде параллельного модуля - http://drupal.org/project/parallel - дляПосмотрим, ускорит ли это для вас.Или, если вы хотите еще больше и чувствуете себя немного авантюрным - CDN - http://drupal.org/project/cdn

Полагаю, у вас уже есть все ваши CSS / JS, которые агрегированы?Кэширование включено?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...