Ранее я написал несколько постов об оптимизации серверов для сайтов на базе Magento.
Сейчас начну серию постов об оптимизации самих сайтов. Что можно и нужно сделать, чтобы сайт "летал"? Под словом "летать" подразумевается время загрузки страницы.
На сегодняшний день "летающими" считаются сайты у которых время загрузки занимает менее 2 секунд.
Хотя, на самом деле, это значение не является абсолютным для всех сайтов, так как нельзя сравнивать время загрузки простых, статичных страниц (например landing pages) и больших коммерческих сайтов.
Так или иначе, есть немало инструментов, позволяющих измерять время загрузки страниц и сравнивать его с другими сайтами той же направленности.
Одним из таких инстументов является онлайн сервис
Pingdom.
Это, если можно так выразиться, первичный инструмент для тестирования скорости сайта.
После того как провели первые тесты мы можем уже получить более ли менее ясную картину куда нужно копать чтобы улучшить результаты.
Например, если для генерации страницы требуется большое количество запросов к серверу (это могут быть изображения, скрипты, подключаемые файлы стилей, другие медиа файлы и пр.) и, как результат, время загрузки страницы может достигать десятков секунд, то в данном случае задача будет заключаться в следующих действиях:
- Уменьшение количества запросов
Для этого можно свести несколько однотипных файлов (скриптов, стилей) в один. Для графических элементов дизайна сайта использовать метод спрайтов. По возможности вынести все статичные файлы на "облако", например на Amazon S3.
В Magento существует возможность сделать merge для файлов CSS и JavaScript.
Впрочем, данный совет имеет смысл применять с оглядкой. Далеко не всегда сведение многих файлов в один будет эффективным, особенно если итоговый файл будет очень тяжелым. Кроме этого, следует помнить, что современные браузеры уже мультипотоковые.
- Оптимизация размера файлов
Даже после того как часть файлов была вынесена на "облако", а другая сведена в меньшее количество, все еще остается достаточное количество файлов, которые сервер должен обработать и выдать. Чтобы ему помочь, можно некоторые файлы оптимизировать.
Если речь идет о графических файлах - то их нужно оптимизировать в графических редакторах, таких как Photoshop, сохраняя файл при помощи Save for web.
Файлы стилей и скриптов можно и нужно "сжимать" при помощи серверного сжатия, такого как gzip/deflate, а также, если это возможно, то сделать им обфускацию.
- Кеширование на стороне сервера и клиента
В данном случае речь идет о стандартных механизмах кеширования Magento, а также о кешировании статичных файлов броузерами пользователей.
О кешировании в Magento я уже кое-что писал.
Чтобы статичные файлы лучше и дольше кешировались на стороне клиента мы используем файлы .htaccess
Вот небольшой пример инструкций для .htaccess:
Header set Expires "Thu, 16 Apr 2020 20:00:00 GMT"
Header set Cache-Control "public, no-transform"
Header set Cache-Control "max-age=604800, proxy-revalidate"
Следующим этапом будет оптимизация DOM модели страниц и соответствие стандартам W3C.
Об этом напишу отдельный пост.
Также, напишу небольшой обзор других полезных инструментов, которые мы используем для тестирования и отладки при оптимизации сайтов.