YМедленные рекомендации.Насколько они необходимы?

StackOverflow https://stackoverflow.com/questions/1142318

Вопрос

Итак, я только что скачал yslow для Firebug и взглянул на результаты сайта, который я создаю.

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

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Яху говорит:«Веб-страницы становятся все более сложными, на них появляется все больше скриптов, таблиц стилей, изображений и 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 говорит:«Теги сущностей (ETags) — это механизм, который веб-серверы и браузер используют для определения того, соответствует ли компонент в кеше браузера компоненту на исходном сервере.Поскольку ETags обычно создаются с использованием атрибутов, которые делают их уникальными для конкретного сервера, на котором размещен сайт, теги не будут совпадать, когда браузер получает исходный компонент с одного сервера, а затем пытается проверить этот компонент на другом сервере».

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


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

Эти два изменения в моем файле .htaccess дали мне оценку «А» по ​​этим двум категориям YSlow.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top