У медленных рекомендаций. Насколько они необходимы? - PullRequest
8 голосов
/ 17 июля 2009

Итак, я только что скачал yslow для firebug и посмотрел результаты для сайта, который я создаю.

Я вижу рекомендации, например, использовать ETags, домен без файлов cookie для моих статических компонентов и добавлять заголовки expires.

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

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

Я знаю, что вам никогда не следует оптимизировать, прежде чем вы поймете, что вам нужно, но я думаю, что такие вещи, как ETag и заголовки expires, безусловно, вступают в игру только на сайтах с действительно большим трафиком.

Если, например, я написал плохую реализацию, которая делает 5 (относительно небольших) обращений к базе данных за запрос, и YSlow говорит мне, что мои 14 изображений не находятся в домене без файлов cookie, то какие из этих две оптимизации должны быть решены в первую очередь?

Ответы [ 7 ]

5 голосов
/ 16 сентября 2009

Нет, не медленно. Наш гуру .htaccess. Но я недавно создал сайт Joomla и использовал YSlow, чтобы найти области для улучшения. Две области YSlow, о которых вы спрашивали выше - «Добавить заголовки Expires» и «Настроить теги сущностей (ETags)» - я адресовал через файл .htaccess в корне моего домена.

Добавить заголовки Expires

Yahoo говорит: «Веб-страницы становятся все более сложными с большим количеством скриптов, таблиц стилей, изображений и Flash на них. При первом посещении страницы может потребоваться несколько HTTP-запросов для загрузки всех компонентов. Использование заголовков Expires эти компоненты становятся кешируемыми, что позволяет избежать ненужных HTTP-запросов при последующих просмотрах страниц. Заголовки Expires чаще всего связаны с изображениями, но их можно и нужно использовать для всех компонентов страницы, включая скрипты, таблицы стилей и Flash. "

Чтобы решить эту проблему, я нашел и добавил следующий блок кода в мой файл .htaccess (примечание: измените OPENANGLEBRACKET на "<" и CLOSEDANGLEBRACKET на ">"):


    ########## Begin - Expires Headers
    #
    OPENANGLEBRACKET IfModule mod_expires.c CLOSEDANGLEBRACKET 
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType application/pdf "access plus 1 month"
    ExpiresByType application/x-javascript "access plus 1 week"
    ExpiresByType application/x-shockwave-flash "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/ico "access plus 1 month" 
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/x-icon "access plus 1 month"
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType text/html "access plus 1 day"
    ExpiresByType text/plain "access plus 1 week"
    ExpiresByType video/x-flv "access plus 1 month"
    OPENANGLEBRACKET /IfModule CLOSEDANGLEBRACKET
    #
    ########## End - Joomla! core SEF Section

Настройка тегов сущностей (ETags)

Yahoo говорит: «Теги сущностей (ETag) представляют собой механизм веб-серверов, и браузер использует их для определения того, соответствует ли компонент в кеше браузера одному из них на исходном сервере. Поскольку ETag обычно создаются с использованием атрибутов, которые делают их уникальными Для конкретного сервера, на котором размещен сайт, теги не будут совпадать, когда браузер получит исходный компонент с одного сервера, а затем попытается проверить этот компонент на другом сервере. "

Я решил удалить все Etags, которые дали мне оценку A, добавив это в мой файл .htaccess:


    ########## Begin - Remove Etags
    #
    FileETag none
    #
    ########## End - Remove Etags

Эти два изменения в моем файле .htaccess дали мне оценки за эти две категории YSlow.

4 голосов
/ 17 июля 2009

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

Помните, что все, что вы исправите, на что жалуется YSlow, скорее всего поможет позже без необходимости повторного выполнения, тогда как оптимизация базы данных будет постоянной задачей.

т. Е. Если вы разделите свои изображения на несколько доменов и сделаете их без файлов cookie, то при добавлении новых изображений они должны быть разделены на эти домены (надеюсь автоматически ) и больше не потребуют усилий. 1009 *

Кроме того, заголовки Expires приводят к более низким уровням запросов на вашем сервере (поскольку ответы могут кэшироваться), что ускоряет посещения для всех .

4 голосов
/ 17 июля 2009

YSlow - это хорошо, чтобы проверить «Пользовательский опыт», который видят ваши пользователи. Его рекомендации состоят в том, чтобы помочь странице появиться для более быстрой загрузки. Например. 14 изображений на 1 изображение, и спрайтинг - это чисто визуальная вещь. Правило таково, что браузеры могут одновременно загружать только несколько изображений одновременно.

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

2 голосов
/ 17 июля 2009

Имейте в виду, что YSlow не может видеть ваш бэкэнд-код, поэтому он может основывать свои рекомендации только на взаимодействии браузера с вашим сайтом. Вы должны обязательно исправить ваши вызовы базы данных в первую очередь. Рекомендации YSlow в отношении нескольких запросов, gzip и т. Д. Довольно убедительны, но это навсегда говорит мне об использовании сети доставки контента - что не имеет смысла для небольшого сайта. Только не тратьте много времени / денег на каждую рекомендацию вслепую, а учитывайте то, что вы знаете, а YSlow нет.

1 голос
/ 16 сентября 2009

Пожалуйста, , пожалуйста, , не используйте куки и истекает для вашего статического контента.

Это не просто помогает вам, это помогает мне .

Дома я использую более медленную интернет-связь, 144 Кбит / с. Я часто загружаю его, загружаю обновления или видеофайлы. Это делает его задержку до 800 мс или около того.

Веб-сайты, которые требуют много циклов для проверки If-Modified-Since, загружаются очень медленно. Сайты, использующие Expires, загружаются правильно быстро, потому что на самом деле должен загружаться только динамический контент.

1 голос
/ 17 июля 2009

Вы совершенно правы, оптимизируете код приложения, такой как

  • Оптимизация медленных запросов к базе данных
  • Кэширование часто выполняемых запросов
  • Кэширование на уровне компонентов часто используемых компонентов
  • Общая оптимизация скорости дорогого кода приложения

в большинстве случаев даст вам гораздо больший прирост производительности, чем рекомендации YSlow.

YМедленная оптимизация обычно направлена ​​на повышение производительности статических частей вашего сайта, которые, как правило, уже будут работать лучше, чем динамические части, до любой настройки.

0 голосов
/ 17 июля 2009

Код бэкэнда чаще, чем код веб-интерфейса. Попробуйте свести к минимуму количество внешних ресурсов (фоновые изображения CSS, файлы CSS и файлы JavaScript).

Это была бы самая важная оптимизация, которую можно сделать imho.

...