Включение сжатия и кэширования на хостинге Ru-Center
2 февраля 2016 года
На форуме Ru-Center, часто всплывает тема оптимизации сайтов на хостинге. На самом деле все не очень тривиально, из-за нюансов организации хостинга. Решил сделать инструкцию, как это сделано у меня.
Что мы хотим получить в итоге:
Увеличиваем скорость работы сайта;
Уменьшаем нагрузку на хостинг;
Повышаем оценку в сервисе google pagespeed.
Так как на хостинге РуЦентра веб-сервер apache (back-end) работает совместно с nginx (front-end), включать кэширование и сжатие будем для nginx.
В панели управления хостингом для сайтов можно выбрать несколько режимов работы:
Автоматический;
Ручной;
Перенаправление.
Что означают эти режимы?
Автоматический режим — все настройки делаются из панели управления хостингом. Из панели мы можем: настроить SSL шифрование, настроить кодировку сайта, запаролить директории сервера, включить модули apache и php и многое другое. Многим этого хватает и этот режим включен по умолчанию, но если мы хотим потюнинговать веб-сервер смотрим дальше.
Ручной режим — настройки производятся в конфигурационных файлах. При переводе сайта в ручной режим, на основе текущих настроек, создаются конфигурационные файлы для серверов apache и nginx. Файлы можно найти в папке /home/идентификатор_хостинга/etc/apache_1.3 и /home/идентификатор_хостинга/etc/nginx .
Перенаправление — просто редирект куда-нибудь и как-нибудь, что в настройках укажете. Нас этот пункт не особо интересует.
Теперь переводим сайт в ручной и отправляемся в папку с настройками nginx, для этого можно использовать хоть доступ по FTP, SSH или файловый менеджер из панели управления хостингом. Находим конфиг, для вашего сайта, вида example.com.site.conf и открываем его. Мы видим базовый конфиг, созданный на основе текущих настроек, его нам надо немного подправить.
Здесь указаны расширения файлов, которые будут считаться статическим контентом.
root /home/example/example.com/docs;
Это путь, где эти файлы хранятся.
В эту секцию мы добавим настройки кэширования, т.е. nginx будет сообщать браузеру посетителя, что эти файлы можно хранить локально в кэше и не скачивать каждый раз заново. Нам надо добавить директиву expires 30d; , которая указывает срок действия кэша, в данном случае 30 дней.
Включаем опцию gzip_static. Теперь, если на сервере рядом с сжимаемым файлом лежит уже готовый архив с таким же именем и расширением .gz, то этот архив и будет отдан клиенту. Как это использовать? Когда сайт готов, мы вручную сжимаем gzip нужные файлы (скрипты, таблицы стилей, xml файлы и т.д.), кладем их на сервер рядом с оригиналами. Важный нюанс: дата создания и изменения у оригинала и архива должны совпадать. Теперь, когда веб-клиент запрашивает нужный ему файл, nginx отдает готовый архив и все довольны, если архива нет, то файл сжимается согласно следующим директивам:
В ру-центре конфигурационный файл невозможно сохранить после редактирования. Выводится сообщение — «Ошибка при сохранении». Пробовал и через файловый менеджер и через Total Commander — все в пустую.
Здравствуйте, а в 2020 г. данная инструкция актуальна? Сайт: https://www.companybest.ru При проверке версия для ПК результат 98, а вот для мобильных чуть больше 80 PageSpeed Insights. На др. форуме рекомендуют подключать плагин, который автоматически сжимает css, а не проделывать манипуляции на хочтинге.
@Sveta Ссылку на сайт не покажите? Возможные варианты: — еще не «подхватились» настройки с изменениями; — PageSpeed жалуется на сторонние статические ресурсы, такие как подключаемые из вне стили/шрифты/скрипты/изображения; — сайт работает по протоколу https
Здравствуйте! Настроила сжатие данных, через параметр «Сжатие данных» на «Вкл», кэширование установила 120 часов. Прогоняя сайт, через сервис PageSpeed Insights, пишет Включите сжатие. Используйте кеш браузера -Если указывать в заголовках HTTP дату или срок действия статических ресурсов, браузер будет загружать уже полученные ранее ресурсы с локального диска, а не из Интернета. Почему?
@Таня Можно вписать, например, 120 часов. Если настройку делать из панели управления хостингом, то включать ручной режим не надо. Ручной режим нужен для более тонких настроек, ну и раньше, когда в панели управления хостингом не было настроек, без ручного режима было не обойтись.
Здравствуйте! Мне сказали Кэширование и сжатие данных (gzip) следует настраивать следующим образом: 1. Перейдите в раздел панели управления хостингом «Веб-сервер» -> «Сайты» -> «Ваш домен». 2. Включите сжатие данных изменив параметр «Сжатие данных» на «Вкл». 3. Измените значение параметра «Кэширование данных» на необходимое Вам количество часов. Только не понятно сколько вписывать часов? И можно ли так настроить без перехода на ручной режим. Не подскажете сколько часов вписывать на авто режиме?
@Дмитрий Сейчас, наверное, помочь не смогу. Услугами ру-центра больше не пользуюсь, перебрался на http://vpsvds.ru/goto/ihor.php , поэксперементировать не на чем. Когда, в последний раз, спрашивал у ТП, про возможность работы такой схемы, сказали, что нельзя так координально настройки менять — заказывайте VDS сервер и «шаманьте» на нем сколько душе угодно. Ну а у меня руки не дошли проверить.
Добрый день. а можете подробнее разложить для дилетантов про: «Убрать настройки ssl из конфигов Апача, настроить ssl на Nginx, заставить его слушать 443 порт и заворачивать все на https, настроить проксирование запросов на Apache,»
Интервалы времени можно задавать в миллисекундах, секундах, минутах, часах, днях и т.д., используя следующие суффиксы:
s секунды m минуты h часы d дни w недели M месяцы, 30 дней y годы, 365 дней В одном значении можно комбинировать различные единицы, указывая их в порядке от более к менее значащим, и по желанию отделяя их пробелами. Например, “1h 30m” задаёт то же время, что и “90m” или “5400s”. Значение без суффикса задаёт секунды. Рекомендуется всегда указывать суффикс.
По поводу даты создания/изменения файла архива и исходных файлов: Можно попробовать с датами и не «шаманить», а посмотреть, будет все нормально работать или нет. От версии к версии Nginx изменялись нюансы работы с фалами при gzip_static, он смотрит не только совпадающие имена у файлов, но и даты изменения, чтобы стараться отдавать клиенту актуальную версию файлов, и результат не всегда был ожидаемый. Я, обычно, с файлами на сервере в ssh сессии работаю, поэтому делаю, например, так: Сжать все css файлы в папке:gzip -kr6 ./*.css Выставить всем файлам одну дату изменения:touch ./*
По поводу уровня сжатия: Где-то на Хабре статья была с замерами скорости сжатия/распаковки, накладных расходов ресурсов и времени, в зависимости от уровня сжатия, по отношению к выигрышу в размере файлов. Там хорошо было видно, что больше 5 уровня смысла жать нет. Разница в размере между 4 и 9 уровнем получается не большая, а ресурсов и времени потребляется гораздо больше. К сожалению пруф найти сейчас не могу. Для себя решил так: если архивы создаю заранее, вручную, то уровень 6, для сжатия «на лету» уровень 2.
По поводу, что сервер не стартует: скорее всего синтаксическая ошибка в конфиге. Проверить можно в терминальной сессии командой nginx -t или попробовать перезапустить nginx в ручную: nginx -s reload или кусок конфига показать.
В общем, тариф 1С-Битрикс, всё сделал по инструкции, то есть добавил в нужные места две строчки: gzip_static on; — и после, ниже expires 1h;
Первый раз делал через Note++, второй раз через файловый менеджер админ панели. В конечном итоге сервак не перезапускается. Подсовываю оригинальный конфиг- перезапускается. То есть добавленые строчки NGNIX обрабатывать не хочет
Уважаемый автор, дополните статью пожалуйста дополнительной информацией, например, какие значения могут быть вместо expires 30d? А именно, что можно прописать вместо d (дней). Могу ли я указать 1h (1 час)? А также почему указывается уровень сжатия gzip_comp_level 2, а не gzip_comp_level 6? Я вот сейчас корректирую конфиг файл, а у меня тут именно 6 левел стоит? Ну то есть если есть разница в уровнях, то стоит хотя бы кратко описать для понимания. Спасибо
Уважаемы автор! Что значит «дата создания и изменения у оригинала и архива должны совпадать»? И главное — как этого добиться? То есть у меня есть css файл, пережимаю его в архив gzip …а дальше что? Как выставить дату создания и изменения одну? Перезаписать css? Чёт не догоняю
Сначала сделать вышеперечисленное, но дочитав до момента
Сейчас в панели управления сайтами появились пункты «Сжатие данных» и «Кэширование данных». Со слов тех поддержки, это те же самые настройки, только гибкости меньше, чем через конфиги.
решил попробовать так. Результат есть, кто не хочет углублятся — пробуйте, включайте:
Веб сервер > Сайты > вашсайт.ру Сжатие данных — включить. Кэширование данных — ввести столько часов сколько нужно (в моем случае при установке 168 часов на PageSpeed Insights остаются только рекомендации по внешним скриптам Метрика, Карты, и т.д. на которые мы повлиять не можем).
А до изменения настроек все работало? В статье я настройки php не трогаю. Проверьте в панели, в разделе модули, какая версия php включена. Если php 7, то в ней нет mysql, есть pdo_mysql и mysqli. В настройках php есть пункт модули, проверьте что у Вас там подключено и какой драйвер BD используется в вашем WP. Я, если честно, с хостинга ру-центра съехал. Перебрался на http://vpsvds.ru/goto/ihor.php за 100 руб. в месяц (по акции за 75 руб. в месяц) и что-то мои сайты чувствуют там себя получше чем в nic.ru. Акция, кстати, до конца апреля месяца будет идти, подробности здесь есть http://vk.com/pages?oid=-120101304&p=% … 1%82%D0%B8
Добрый день! Делаю все, как Вы сказали, но при попытке загрузки блога выдает: Похоже, в вашей конфигурации PHP отсутствует расширение MySQL, необходимое для работы WordPress
Добил я всё-таки ТП. Теперь сервер перезапускается, gzip работает, директиву в файле конфигурации прописал. Но, гад этот — пейджспид, говорит, что у меня сжатие идёт, но кеш браузера не используется для яндекс метрики и гугл аналитики. В любом случае спасибо за эту статью. Рад буду и вам помочь когда-нибудь)
Лучше опять в ТП обращаться, видимо, что-то у них там хитрое сделано, и скорее всего, из-за тарифа. 301 тариф, насколько я знаю, уже архивный. Сервер из панели может не перезапускаться, если в конфигурационном файле ошибка есть (например скобка в секции не закрыта, или скрипт панели, который генерирует окончательный конфиг и перезапускает демонов, косячит. У меня было такое, когда в конфиге Nginx были дерективы по блокировке ботов и ограничению количества запросов, скрипт панели управления падал и не мог запустить сервер. Я решал это с помощью SSH консоли: nginx -s reload В ручную заставлял энжингс перезагрузить конфигурационный файл, и все работало. Если в конфиге ошибка есть, то можно делать так: nginx -t протестировать конфигурационный файл и проверить его расположение.
Вообщем, написал в техподдержку. Провели они какие-то манипуляции, файл появился. Теперь другая проблема)) Перевожу сайт в ручной режим, у меня спрашивает «Переписать существующий файл конфигурации файлом, сгенерированным по актуальным значениям параметров, установленных в автоматическом режиме настройки» или «Использовать для настройки сайта найденый файл конфигурации». Выбираю, чтобы перзаписал и делаю правки как написано выше, пытаюсь перезапустить сервер, а он не перезапускается. Сайт полностью ложиться)
Странно очень. Проверил только что: создал новый сайт, перевел в ручной режим, добавились конфиги для апача и энжинкса. Попробуйте в поддержку обратиться. Тариф, кстати, какой?
Если в папке etc/nginx нет конфигурационного файла для сайта, то, скорее всего, Вы не перевели сайт в ручной режим (не сервер!). При переводе сайта в ручной режим, на основании настроек из панели, создаются конфиги для апача и энжингса.
Также добавлю, что https://developers.google.com/speed/pagespeed/insights/ показатели скорости 70/100, и помимо общих рекомендаций, предлагается рекомендация по сжатию всего одной страницы! а показатель pagespeed (расширение chrome) 45/100 и расширение предлагает сжать 15 страниц!
Добрый вечер! Проделал все вышеперечисленные манипуляции. Итог: http://www.gidnetwork.com/ — показывает, что сжатие включено pagespeed — просит включить сжатие, причем, что до манипуляций, что и после показатель pagespeed не изменился. Подскажите, что не так?
@Сергей Да, Вы правы, при использовании ssl инструкция не подходит. Дело, тут, вот в чем: у хостинга Ru-center сделано так,что при подключении ssl, nginx (а в инструкции настраивается он) выпадает из работы, запросы https (443 порт) принимает Apache, со всеми вытекающими последствиями. Сделано так, я полагаю, для упрощения. При стандартной конфигурации, используется правильная схема: nginx (frontend) принимает запросы на стандартном 80 порту (http) и, в зависимости от правил, обрабатывает их (статику отдает, сжимает и т.д., и делает это быстрее и экономичнее, чем Апач) или перенаправляет на Apache (backend) висящий на 8080 порту, а результат отдает клиенту. При включении ssl подключения идут по https на 443 порт, который слушает Apache и обрабатывает их. Nginx здесь не участвует, и все настройки ssl делаются только для Апача. Соответственно тут и тормоза и повышенные расходы ресурсов. Чтобы ситуацию изменить, парой строк в конфигах не обойтись. Что можно сделать: — Настроить сжатие и кэширование на Apache, забить на преимущества Nginx как фронтенда; — Убрать настройки ssl из конфигов Апача, настроить ssl на Nginx, заставить его слушать 443 порт и заворачивать все на https, настроить проксирование запросов на Apache, настраивать сжатие и кэширование по инструкции. Довольно геморно, если опыта не хватает, есть нюансы с разными сертификатами, но более эффективно и правильно.
Здравствуйте. Этот у меня не работает при ssl соединении. Подскажите пожалуйста, как модифицировать конфиг, чтобы сжатие и кэширование работали по https?
Один файл для всех создается, если перевести не сайт, а сервер в ручной режим. Актуально 100% на 302-тарифе и битриксе, на других не проверял. Процессы как смотрите? Nginx точно есть на всех тарифах. Сейчас в панели управления сайтами появились пункты «Сжатие данных» и «Кэширование данных». Со слов тех поддержки, это те же самые настройки, только гибкости меньше, чем через конфиги. Вы точно сайт перевели в ручной режим (Веб сервер>>Сайты)
Если файла нет, значит не перевели сайт в ручной режим. При переводе сайта в ручной режим, на основе текущих настроек, в папке /home/идентификатор_хостинга/etc/nginx создается автоматически файл example.com.site.conf
Для Алексей #7 Вы, наверное, сайт в ручной режим не перевели. В панели управления внимательно посмотрите, там можно перевести в ручной режим сервер, и каждый сайт по отдельности. Это разные вещи! Сервер можно оставить в автоматическом режиме, а нужный сайт перевести в ручной. Тогда у Вас появятся файлы конфигурации Апача и ЭнЖингса, доступные для редактирования.
Добрый день. Прошу помочь разобраться с какталогами. У меня на хостинге Ru-Center нет файла example.com.site.conf в каталоге Веб-сервер/Файловый менеджер/home/идентификатор_хостинга/etc/nginx/ Я нашел этот файл ближе к корню- Веб-сервер/Файловый менеджер/etc/nginx/ Но он только для чтения. Я скопировал example.com.site.conf в Веб-сервер/Файловый менеджер/home/идентификатор_хостинга/etc/nginx/, доработал, как вы сказали, но сервис от google по прежнему требует сжатия. По видимому система использует не модифицированный файл. Что делать? Разбираться с правами и править? И еще вопросы. После модификации и перезапуска сервера режим выставлять Ручной или Автоматический? У вас на картинке — автоматический. Будет ли отрабатывать файл конфигурации? Из описания понял, что система сама, если не найдет будет делать сжатие файлов. Так ли это?
Огромное спасибо за статью! А то мучился пол-дня, чтоб включить всё это через htaccess, но ни к чему не пришел. Сделал то, что написано у Вас и реально разница с 53 до 89. Спасибо! Мегареспект! :-)
#49. 25 ноября 2015 года, 18:13. Благодарность пишет: