YМедленные рекомендации.Насколько они необходимы?
-
16-09-2019 - |
Вопрос
Итак, я только что скачал 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).
Имхо, это была бы самая важная оптимизация, которую можно сделать.