Многостраничный сайт на Wordpress, оптимизация

SP
На сайте с 17.01.2012
Offline
49
2996

Добрый день. Оптимизирую информационный проект на Wordpres с количеством страниц более 50.000. Столкнулся с определенными трудностями, и буду рад если кто подскажет как оптимальней их устранить. Забегая наперед, скажу что сайт работает на VPS-ке.

1. Первая проблема с временем загрузки страницы, и все потому, что помимо большого количества постов, каждый из них имеет от 3 до 10 произвольных полей, которые загружаясь на странице формируют её. Казалось бы кеширование спасет этот момент (тот же Super Cashe), так и есть, но возникает следующая проблема.

2. Страниц более чем 50.000 и их полное кеширование занимает около 4 суток. И в этот момент может периодически выскакивать ошибка 504 при работе с админкой, превышено время ожидания и все такое. Помимо каталога организаций на 50 тыс. страниц ,есть ряд обычный статей, и их кэш хотелось бы обновлять чаще чем раз в 3 месяца. То есть напрашивается решение, настроить кеширование для разных типов записей на разное время. И как вот это дело настроить пока не представляю даже.

Или на совсем крайний случай отключить кеширвоание для этих 50 тыс страниц, а кешировать самые главные. Например в плагине WP Super Cache есть возможность не кешировать страницы, отфильтровать их по УРЛ. Но тогда на сайте будет много страниц, которые сервер может отдавать от 2 до 4 секунд, что в целом для сайте не есть хорошо.

Может кто подскажет, как поступить с этим самым кеширвоанием.

P.S. фильтрация пл урл на данный момент услаждена тем, что структура урл всех материалов site.ru/nazvanie-materiala.html, но тут можно сделать произвольный тип записи у которого будет своя вложенность site.ru/categoriya/nazvanie-materiala.html. Плюс это немного разгрузит админку, ведь открыть пункт записи в админке, где их добавлено более 50 тыс намного сложнее чем если бы эти 50 тыс были не в "записях" а в созданном произвольном формате "организации".

Вот такой вот вопрос/длиннопост. Все кто его осилил - спасибо. И повторюсь по факту проблема, которую еще не понимаю как решить, это кеширование. Как настроить разное время регенерации кеша, или может другое более изящное решение проблемы.

Персональный сео блог (http://smart-profi.ru/)
В
На сайте с 04.07.2017
Offline
23
#1

Сколько по времени у вас загружаются страницы (пост, список постов)?

у меня вот один сайт на 85 тыс. страниц, в каждой записи около 5-10 заполненных кастомных полей. Плюс из каждого поста свои запросы в базу с выборкой из таблиц на сотни тысяч записей.

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

Может дело в хостинге? В настройках сервера? Или, например, какие-то ошибки в коде?

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

Почему? Таблица то одна

SP
На сайте с 17.01.2012
Offline
49
#2
Вяземский:
Сколько по времени у вас загружаются страницы (пост, список постов)?

На более сложных страницах 3-5 секунд. На более простых 1.5-4. Значения плавают каждый раз по разному.

Вяземский:
Может дело в хостинге? В настройках сервера? Или, например, какие-то ошибки в коде?

Сервак у Fast VPS, проц на 2.4, 4Гб оперативки(занят 1 ГБ в работе), SSD. НА этом же серваке есть еще 1 такой тяжеловес, на 30 тыс страниц, но там полей меньше и работе шустро без кеширования. Есть еще один момент, этот же тяжеловесный сайт, без кеширования перенес на обычный хостинг, так в админке сайт был намного шустрее чем на VPS, но вот во фронтеднде на обычном хосте тупил не слабо. Поддержка VPS ссылается на большую базу (400 мБ) и большое количество произвольных полей (1.3 млн).

Ошибок как бы нет, на страницах по сути помимо вывода контента и еще 5-10 вызовов разных произвольных полей.

Есть предположение что тупняк из-за плагина ACF (Расширенные произвольные поля 4.4.12), активировал его для удобного оформления этих самих полей на странице админки, а то стандартный вид ну совсем не удобный. Но наверняка это проверить уже сложновато.

Вяземский:
Почему? Таблица то одна

Таблица одна, но листинг выводится отдельно для каждого формата. Так вот если записей более 50 тыс, то открываются они 2-3 секунды, в то время как в "вопросах" и "организациях" сейчас по 10 записей. Открытие происходит намного быстрее.

В
На сайте с 04.07.2017
Offline
23
#3
Smart_profi:
Сервак у Fast VPS, проц на 2.4, 4Гб оперативки(занят 1 ГБ в работе), SSD.

FastVPS не пользовался.. Но мой ГС на vps c 1 ядром, 1гб оперативки и обычным диском..

а на сервере что?

nginx? если да, то настраивали или дефолтные характеристики?

Smart_profi:
Поддержка VPS ссылается на большую базу (400 мБ) и большое количество произвольных полей (1.3 млн).

ну это не большая база

mysql - какие типы таблиц? настраивали?

Smart_profi:

Есть предположение что тупняк из-за плагина ACF (Расширенные произвольные поля 4.4.12), активировал его для удобного оформления этих самих полей на странице админки, а то стандартный вид ну совсем не удобный. Но наверняка это проверить уже сложновато.

не знаю.. я создавал и заполнял поля программно.

SP
На сайте с 17.01.2012
Offline
49
#4
Вяземский:
а на сервере что? nginx? если да, то настраивали или дефолтные характеристики?

Ничего не настраивал, все по дефолту. Плагин кстати потестировал, дело не в нем. В записях (коих очень много), даже при откртии на редактировании жду 2-3 секунды. А если сразу 3-5 открыть то вообще. При этом в произвольных типах данных, как уже говорил, у меня открывается быстро. Но то ладно, проблема вторичная. как мне быть с кешированием? 😒

Вяземский:
mysql - какие типы таблиц? настраивали?

По таблицам все стандартно для wordpress.

В
На сайте с 04.07.2017
Offline
23
#5
Smart_profi:
Ничего не настраивал, все по дефолту.

Честно говоря, я бы сначала к этому присмотрелся. Установка (если нет), настройка nginx (те же gzip, время браузерного кеширования статики и прочее) и, особенно, настройка mysql. Заодно попробовать http2 включить, если у вас https и если версия OpenSSL позволяет.

Smart_profi:
как мне быть с кешированием?

Я не уверен, что проблема в этом. 50 тыс страниц - это мало. Не может из-за этого так тормозить.

Вы услугами FastVPS давно пользуетесь? Может с ним что-то не так? Недавно, например, vps новый искал. Купил один недорогой, но с хорошими (как казалось) характеристиками - с mysql были большие проблемы.. Тянул еле-еле.

Особенно настораживают слова хостера о том, что 400 мБ - это большая база и что 1.3 млн записей - это много

Devvver
На сайте с 02.07.2008
Offline
662
#6
Smart_profi:
В записях (коих очень много), даже при откртии на редактировании жду 2-3 секунды. А если сразу 3-5 открыть то вообще.

У меня похожая проблема была из-за большого размера wp_option.

Сама БД сжата и оптимизирована?

Smart_profi:
Страниц более чем 50.000 и их полное кеширование занимает около 4 суток. И в этот момент может периодически выскакивать ошибка 504 при работе с админкой, превышено время ожидания и все такое.

В WP Fastest Cache есть "Автоматическая предварительная генерация кэша всего сайта" http://www.wpfastestcache.com/features/preload-settings/

Там можно настроить скорость генерации кеша.

Мой блог. Все о создании сайтов,Seo и СДЛ ( https://devvver.ru/ ) Мой SEO телеграм канал https://t.me/seobloggers
L0
На сайте с 15.04.2015
Offline
76
#7

Была похожая проблема. Просил тех поддержку вынести временные таблицы БД в оперативную память. Но нужно соответственно для этого свободной оперативки иметь запас.

ошибка 504 при работе с админкой возникает не факт, что из-за кеширования. это может быть и большое число запросов от посетителей сайта.

какая посещаемость ресурса ?

Смотрите все плагины внимательно. Может из-за них скорость падать загрузки.

Для более детальной помощи, надо видеть пациента.

Да, я опасен! Я говорю вам - правду
il_cattivo
На сайте с 25.06.2016
Offline
63
#8

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

При публикации сбрасывать кэш только на главной странице и метках-рубликах ипр Если доработал запись - на ней в ручную - плагин WP Fastest Cache. Посмотреть что медленно грузиться - query monitor

SeVlad
На сайте с 03.11.2008
Offline
1609
#9
Smart_profi:
По таблицам все стандартно для wordpress.

Для начала приведи все к одному типу (innoDB в данном случае). Разные типы создают доп. тормоза.

И posrmeta как-то подозрительно великовата.

У тут есть несколько (шт. пять только на русском) полезных семинаров, рассказывающих как решать такие проблемы: https://wordpress.tv/?s=Kovshenin

А, ну и желательно php7 и нжинкс без апача.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий