Новости

Как правильно применять в JavaScript асинхронные функции: примеры работы с ES 2017
От автора: возможность писать на JavaScript асинхронные функции является важным обновлением в ES2017. Что такое асинхронные функции? Асинхронные функции — это функции, которые возвращают promise. Мы

WordPress JavaScript — как правильно подключить файл скрипта к шаблону сайта
Использование в шаблонах WordPress JavaScript скриптов давно стало обычным делом. Их подключение возможно несколькими способами, начиная с классического варианта с использование голого HTML. Но чтобы все

Как исправить JavaScript error "ВКонтакте"? Что делать при ошибках JavaScript в "ВКонтакте"?
"ВКонтакте" - это на сегодняшний день самый удобный русскоязычный ресурс, который является не только популярнейшей социальной сетью, но и сервисом для прослушивания аудиозаписей и просмотра видео. Здесь

Правильное использование Tor Browser
Tor Browser полностью анонимен – Миф или реальность? Многие считают, что Tor — это полностью анонимное и безопасное средство для интернет-серфинга, которое не дает никому возможность контролировать то,

Javascript error object is not a function вконтакте как исправить
"ВКонтакте" - это на сегодняшний день самый удобный русскоязычный ресурс, который является не только популярнейшей социальной сетью, но и сервисом для прослушивания аудиозаписей и просмотра видео. Здесь

Как исправить ошибку javascript error вконтакте
На сегодняшний день «Вконтакте» является наиболее удобным русскоязычным ресурсом, который представляет собой не только крупнейшую социальной сеть, но и сервис для просмотра видео и прослушивания аудиозаписей.

Что такое JavaScript и для чего он используется?
Подробности декабря 10, 2015 Просмотров: 20225 В интернете миллионы веб-страниц,

Практика javascript синтаксис написания
Javascript — это язык программирования, который активно используется для построения динамических веб страниц. Собственно с этой целью он и был изобретен. У нашего с вами языка еще есть такое интересное

JavaScript учебник
Код функций в JavaScript начинает выполнение после их вызова. Функции являются одним из наиболее важных строительных блоков кода в JavaScript. Функции состоят из набора команд и обычно выполняют

Рекомендации решившим начать изучать JavaScript
Если вы решили начать изучать JavaScript , то эта статья для вас. Надеюсь, что её прочтение избавит вас в будущем от множества ошибок и сделает его изучения более простым, быстрым и эффективным. В статье

Чиним карту сайта Yoast SEO на огромном WordPress сайте

Опубликовано: 02.09.2018

Недавно один из моих клиентов пришёл ко мне с такой проблемой: карта сайта, которая генерируется плагином ломается на их огромном высоконагруженном WordPress сайте.

Yoast SEO разбивает карту сайта на несколько отдельных кусков. На этом сайте отдельные куски успешно создаются, а вот общий индексный файл — нет, скрипту просто не хватает времени на все эти операции. Это влечёт за собой другую проблему — поисковые системы не видят карту сайта.

Карта сайт реально помогает поисковым системам находить новый контент на вашем сайте, поэтому исправление данного бага стало приоритетной задачей для клиента. Ошибка плавающая, поэтому трудно поддаётся диагностике, а на других сайтах всё работает как часы.

Учитывая, что сайт имеет десятилетний опыт, можно легко предположить, почему карта сайт ломается: из-за огромного количества записей сервер шлёт скрипт далеко и надолго, потому что тот не успевает выполнить свои задачи за отведённые ему 30 секунд.

Увеличиваем таймаут до 120 секунд — всё плохо.

Увеличиваем таймаут до 300 секунд. Пять грёбаных минут, Карл!

Стало немного получше.

Если и дальше увеличивать таймаут, то это чревато тем, что сервер рано или поздно ляжет совсем.

Решение

Yoast SEO не имеет (пока) (WordPress command line interface) команд, но мы же можем использовать для запуска произвольного PHP кода в инфраструктуре WordPress.

После глубокого анализа исходного кода плагина Yoast SEO был найден PHP класс и его методы для вывода индексной карты сайта (та, что содержит ссылки на другие карты).

Пробуем запусить процесс через wp eval:

wp eval ' $sm = new WPSEO_Sitemaps; $sm->build_root_map(); $sm->output(); '

Выполнение задачи заняло небольшое количество времени и индексный файл был успешно получен. Значит, мы пошли правильным путём.

Теперь вешаем всё это добро на крон с выводом результата в статический файл:

0 3 * * * cd /srv/www/example.com && /usr/local/bin/wp eval '$sm = new WPSEO_Sitemaps;$sm->build_root_map();$sm->output();' > /srv/www/example.com/wp-content/uploads/sitemap_index.xml

Финальным шагом меняем конфигурацию веб-сервера Nginx таким образом, чтобы ботам, которые пытаются получить файл sitemap_index.xml в корне сайта, отдавалась его статическая версия из папки uploads, куда его кладёт наш крон:

location ~ ([^/]*)sitemap(.*).x(m|s)l$ { rewrite ^/sitemap.xml$ /sitemap_index.xml permanent; rewrite ^/([a-z]+)?-?sitemap.xsl$ /index.php?xsl=$1 last; rewrite ^/sitemap_index.xml$ /wp-content/uploads/sitemap_index.xml last; rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last; }

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

А клиент счастлив, что ему нет необходимости менять SEO плагин и его бизнес спасён.

Отдельная благодарность WP-CLI за чуточку магии.

Ссылки

Кобзарёв Михаил 38 Чиним карту сайта Yoast SEO на огромном WordPress сайте PHP Portal Недавно один из моих клиентов пришёл ко мне с такой проблемой: карта сайта, которая генерируется плагином Yoast SEO ломается на их огромном высоконагруженном WordPress сайте.Yoast SEO разбивает карту сайта на несколько отдельных кусков. На этом сайте отдельные куски успешно создаются, а вот общий индексный файл - нет, скрипту просто не хватает времени на все эти операции. Это влечёт за собой другую проблему - поисковые системы не видят карту сайта. https://www.kobzarev.com/wp-content/uploads/2018/01/yoast-seo-800x436.jpg
rss