В статье собраны мои практики, которые я применяю для ускорения работы сайта на платформе WordPress или интернет-магазина на WordPress + Woocommerce.
Хочу предупредить сразу — это не Google Page Speed.
Оглавление:
Хостинг для WordPress.
По этому поводу написано множество статей и рекомендаций, повторяться нет смысла. Вот кратко мои практические советы:
Виртуальный хостинг подходит под:
- небольшой сайт/блог/etc с невысокой посещаемостью
- небольшой интернет-магазин + блог с невысокой посещаемостью
VPS подходит для:
- корпоративный сайт/блог со средней посещаемостью
- интернет-магазин с количеством товаров до 2000 и средней посещаемостью
Параметры VPS — минимум два процессора и 4 гБ памяти.
Выделенный сервер:
Здесь фантазия ограниченна только здравым смыслом, а начинаться он должен с минимум четырех процессоров и 8 гБ памяти.
В качестве хостинг-провайдера я рекомендую “HOSTPRO”, с которым работаю уже больше десяти лет.
Параметры хостинга.
Правильно настроенный хостинг — это половина скорости работы сайта. Я использую следующие настройки:
Настройки PHP
- PHP версии от 7.1 и выше
- Памяти под процесс (memory_limit) – 512
- Время выполнения скрипта (max_execution_time) 300
Модуль Zend OPCache
- opcache.enable=1
- opcache.validate_timestamps=1
- opcache.revalidate_freq=60
- opcache.max_accelerated_files=10000
- opcache.memory_consumption=64
- opcache.interned_strings_buffer=8
- opcache.fast_shutdown=1
Модуль Memcached
Модуль Igbinary
- igbinary.compact_strings
Настройки MySQL
Про настройку конфиграций для MySql есть хорошая статья
«Примеры конфигураций сервера»
https://ruhighload.com/mycnfexample
На этом настройку серверной части я заканчиваю, хотя тут еще много работы для системного администратора.
Переходим к настройке сайта
Тема для WordPress + Woocommerce
Если хороший хостинг – это 50% успеха, то хорошо оптимизированная тема — это следующие 25%, остальные 25% — это плагины. По выбору темы есть много отдельных статей, останавливаться не буду, порекомендую SHoptimizer
Плагины для ускорения работы сайта
- Модуль pomodoro для кеширования переводов
https://github.com/pressjitsu/pomodoro - Плагин LiteSpeed Cache — перепробовал много остановился на нем
https://wordpress.org/plugins/litespeed-cache/ - Premmerce WooCommerce Performance Optimizer Features
https://premmerce.com/woocommerce-performance-optimizer/ - Clearfy – WordPress optimization plugin and disable ultimate tweaker
https://wordpress.org/plugins/clearfy/
Общее замечание по плагинам – необходимо применять их исключительно по необходимости и, как будет показано ниже на примере Contact Form 7, подключать их на тех страницах, где они используются.
PHP код для ускорения работы сайта
Далее будут вставки php кода, который необходимо добавлять в function.php дочерней темы. Надеюсь, что такое дочерняя тема — знают все.
Ускоряем админку:
Первая часть:
* Отключаем принудительную проверку новых версий WP, плагинов и темы в админке, чтобы она не тормозила, когда долго не заходил и зашел…
* Все проверки будут происходить незаметно через крон или при заходе на страницу: «Консоль > Обновления».
if( is_admin() ){ // disable update check remove_action( 'admin_init', '_maybe_update_core' ); remove_action( 'admin_init', '_maybe_update_plugins' ); remove_action( 'admin_init', '_maybe_update_themes' ); remove_action( 'load-plugins.php', 'wp_update_plugins' ); remove_action( 'load-themes.php', 'wp_update_themes' ); add_filter( 'pre_site_transient_browser_'. md5( $_SERVER['HTTP_USER_AGENT'] ), '__return_true' ); }
Вторая часть — ее стоит применять очень осторожно, она отключает стили и js скрипты на тех страницах, где woocommerce нет
add_action( 'wp_enqueue_scripts', 'child_manage_woocommerce_styles', 99 ); function child_manage_woocommerce_styles() { //remove generator meta tag remove_action( 'wp_head', array( $GLOBALS['woocommerce'], 'generator' ) ); //first check that woo exists to prevent fatal errors if ( function_exists( 'is_woocommerce' ) ) { //dequeue scripts and styles if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) { wp_dequeue_style( 'woocommerce_frontend_styles' ); wp_dequeue_style( 'woocommerce_fancybox_styles' ); wp_dequeue_style( 'woocommerce_chosen_styles' ); wp_dequeue_style( 'woocommerce_prettyPhoto_css' ); wp_dequeue_script( 'wc_price_slider' ); wp_dequeue_script( 'wc-single-product' ); wp_dequeue_script( 'wc-add-to-cart' ); wp_dequeue_script( 'wc-cart-fragments' ); wp_dequeue_script( 'wc-checkout' ); wp_dequeue_script( 'wc-add-to-cart-variation' ); wp_dequeue_script( 'wc-single-product' ); wp_dequeue_script( 'wc-cart' ); wp_dequeue_script( 'wc-chosen' ); wp_dequeue_script( 'woocommerce' ); wp_dequeue_script( 'prettyPhoto' ); wp_dequeue_script( 'prettyPhoto-init' ); wp_dequeue_script( 'jquery-blockui' ); wp_dequeue_script( 'jquery-placeholder' ); wp_dequeue_script( 'fancybox' ); wp_dequeue_script( 'jqueryui' ); } } }
Убираем WP-Syntax
remove_action( 'wp_head','wp_syntax_head');
Вызываем Contact Form 7 (если он у вас есть) только на тех страницах, где он используется
// Deregister Contact Form 7 styles add_action( 'wp_print_styles', 'aa_deregister_styles', 100 ); function aa_deregister_styles() { if ( ! is_page( get_theme_mod( "header_contacts") ) ) { wp_deregister_style( 'contact-form-7' ); } } // Deregister Contact Form 7 JavaScript files on all pages without a form add_action( 'wp_print_scripts', 'aa_deregister_javascript', 100 ); function aa_deregister_javascript() { if ( ! is_page( get_theme_mod( "header_contacts") ) ) { wp_deregister_script( 'contact-form-7' ); } }
There is 1 comment on this post
Wow, very wonderful content