Для начала начну с того, что после вот этого поста:
http://alexrayu.com/blog/drupal-739-vs-drupal-8-rc1-performance
Я был очень удивлен комментариям, процитирую:
You conveniently fail to mention two things in the blog post:1. You compare Drupal 8's out-of-the-box performance with a tweaked Drupal 7: you enabled the page cache.
2. Drupal 7's page cache is inferior: a) no instantaneous updates; b) any node or comment posted causes the entire page cache to be cleared (!); c) many user actions that cause the page to change do not invalidate the page cache, so stale content continues to be sent.In other words, Drupal 7's page cache:
- shows stale content, hence the site appears broken to the site owner
- is cleared in its entirety and thus far less effectiveHence this is an apples-to-oranges comparison.
A Drupal 8 site with the Page Cache enabled is functionally equivalent to a Drupal 7 site with Page Cache disabled. Make that comparison instead, and the chart will look vastly different.
Claiming every tutorial recommends this does not make this comparison correct. Only bad articles say "Enable page cache.", good articles say "Enable page cache, but know that it comes with disadvantages X, Y and Z." — i.e. they provide the necessary nuance.If you simply refuse to compare things correctly or even call out the necessary nuances, fine, then there is nothing else I can say.
Если коротко, то вы не то и не так сравниваете. Очень много слов что сравнивать работу кеша Drupal 7 и кеша Drupal 8 не верно, так как они предоставляют разные данные.
Окей. Давайте сделаем "правильно":
- установил Drupal 7.
- набил в него контента через devel generate
- мигрировал это все дело на drupal 8
- параметры хостинга: CPU E5-1650 v3 @ 3.50GHz, php_memory_limit = 512M, HW SSD RAID 5, Innodb database. xcache opcode. php-5.6
В итоге получилось 2 такие вот страницы:
http://drupal7.drupal-site.net/node/199
http://drupal8.drupal-site.net/node/199
Если вы посмотрите исходник HTML в самом конце вы увидите данные которые я буду приводить ниже.
Эти данные генерируются на уровне php, специально разработанным модулем php.
Тест 1. Cтраница материала 199 под авторизированым пользователем.
Drupal 7 сайт с отключеным кешированием. , авторизация под админом
Drupal 8 c включенным кешированием, авторизация под обычным пользователем
Drupal 7
Drupal8
Итог: Drupal 8 150ms и Drupal 7 130ms
Напоминаю у Drupal 7 отключен кеш для "честного сравнения".
Теперь все тоже, но под анонимным пользователем.
Тест 2. эта страница под анонимным пользователем.
Drupal 7 сайт с отключеным кешированием.
Drupal 8 c включенным кешированием
Drupal 7
Drupal 8
Но при этом контент появился не сразу... и после разбирательств я нашел запрос на
http://drupal8.drupal-site.net/history/199/read
Итог: Drupal 8 12+33 = 45ms и Drupal 7 110ms
Напоминаю у Drupal 7 отключен кеш для "честного сравнения".
А теперь попробуем небольшой модуль render_boost
По сути это кеш рендеринга. А значит данные актуальные при отображении.
Доступно для теста тут: http://rb.drupal7.drupal-site.net/node/199
Тест 1. Авторизированный.
Тест 2. Анонимный
Итого сделаем табличку результата:
Drupal 7 no cache 130ms 110ms
Drupal8 cache enabled 150ms 45ms
Drupal 7 + render boost 60ms 52ms
Комментарии к цифрам теста: Я делал по несколько запросов, чтоб дать возможность разогреться opcode cache, drupal cache и render_boost кешу и выбирал лучшую цифру из нескольких запросов. Суть теста показать возможности системы кеширования Drupal 7, Drupal 8 и Drupal 7 + render_boost в приблизительных цифрах
Комментарии
Для полной картины любопытны результаты теста, для Drupal 7 cache enabled.
Модуль render boost очень полезен для высоко-нагруженных проектов. Не будет ли явной финансовой оплошностью ставить его на новый проект?
Много ли диска он сожрёт, приблизительно?
Разумный вопрос. Действительно - если на сайте посещаемость минимальная, бонуса не будет постоянным истечением времени жизни Кеша.
Особого теста сравнения на объем диска не делал. Будут результаты - кину или сюда или на страницу модуля.
Мне не понятно почему сравнивается d7 без кэша, а d8 с кэшем. На первый взгляд это сделано для того, чтобы хоть как то выровнять показатели )
Да, как фора в шахматах ) Семёрка монолит, позиций не сдаст.
Навел на мысль - может это гамбит? Поживем - увидим.
Спасибо за тесты, очень интересно!
Кеширование по дефолту в D7 и D8 работают по разному.
D7 - на какое-то время кешируется все содержание страницы, пользователи не получают обновленную страницу при ее изменении в этот период времени.
D8 - позволяет часть содержимого вывода кешированной страницы отдавать с более часто обновляемым кешем или совсем не кешировать. ( http://wimleers.com/article/drupal-8-dynamic-page-cache )
Интересно, не очень понял как этот модуль работает. Можно подробнее рассказать? На любой D7 сайт ставится?
@gor, большое спасибо, всегда интересно посмотреть сравнения!
Слышал, что друпал 8 здорово подтянулся в производительности, но чтобы на столько приблизится к 7-ке?!
В точку! Если перевести комментарии Лирса чуть длиннее, то получится:
Чуваки, как можно сравнивать яблоки с апельсинами? Добавьте драйва на ваши монолитные страницы под ламинатом, и результат не заставит себя ждать
семерка без кеша в сущности получается быстрее восьмерки с кешем
но восьмерку php7 спасает, но и семерку сделают совместимой с php7
У друпал 7 контриба будут проблемы с php7.
Да и вполне могут принять решение:
'не адаптировать Drupal 7 под php7'
Что б лучше смотрелась 8ка.
К слову backdrop CMS (та что форк от Drupal 7) уже совместима с php7
на php 7 backdrop CMS летать будет. восьмерка с на php7 работает как на php5.6 с memcashe
Да, можно ставить на любой Drupal 7.
Самый большой выигрыш на страницах с большим рендерингом: страница перечня нод или страница ноды с комментариями.
Суть работы такая. Вызывается
Модуль кеширует результат работы этой функции по md5 $content .
В итоге в базе данных набор кешей которые могут быть использованы на разных страницах разными пользователями.
Если мне прийдет в голову как собирать кеш вообще всей страницы для анонима, то разница будет опять существенна.
при этом есть интересный момент: пока что никто не делал сравнение потери на разогрев кеша.
Думаю многим знакома проблема, когда сайт банально тупит после сброса Кеша минут 5 .
Что будет с d8 еще не понятно.
В Drupal 8 необходимости сбрасывать весь кэш в общем то и не будет благодаря Cache Tags.
@gor спасибо за статью!
Отдельное спасибо за модуль!
Попытался поставить себе модуль https://www.drupal.org/project/render_cache
Особых результатов не заметил, как настраивать не понял, при этом он у меня не работал с контекстом, снес модуль.
Поставил модуль от gor с этой страницы https://www.drupal.org/node/2665640 https://github.com/itpatrol/render_boost/ Тоже ничего не увидел, включая настройки Правда хостинг от it patrol и так быстрый, может поэтому никакой визуальной разницы не понял!?
Приходит письмо от gor (gor@me.com через krypton2.vps-private.net ) с текстом:
Thank you for registering at Render cache. Your application for an account is
currently pending approval. Once it has been approved, you will receive
another e-mail containing information about how to log in, set your password,
and other details.
-- Render cache team
Это письмо какого модуля касается? Кэша или буста?
Там что, какие-то настройки будут? Или он у меня и не работал?
Эти модули взаимозамяемые? Или как? Хотел что-бы в https://www.drupal.org/project/render_cache big pipe как в Drupal 8 ( https://www.drupal.org/project/big_pipe ) заработало, сильно меня их демонстрация удивила.. Вроде там есть render_cache_big_pipe
Заранее спасибо за ответы, я только любитель, знаний и умений катастрофически не хватает..
Владимир, очень странное сообщение.
Я банально теряюсь в мыслях откуда и почему.
выглядит как текст при регистрации аккаунта.
Но при чем тут мой имейл?
Далее - https://www.drupal.org/project/render_cache это не мой модуль и ничего общего не имеет.
Что б модуль заработал - надо сделать патч на ядро (команды тут: https://github.com/itpatrol/render_boost/blob/master/README.md)
и еще потом зайти в настройки на странице настройки производительностей в админке, секция Render boost
Спасибо за комментарий, я попросил ребят с вашего хостинга, они пропатчили ядро и модуль Render boost заработал на сайте http://s09.ru . Все работает замечательно, даже визуально заметно увеличение скорости открытия страницы, но есть маленькая проблемка, не админам (анонимам и т.д.) показывается контекстное меню у блоков на страницах. Т.е. при наведение на любой блок появляется рамочка меню. При нажатие на него пишет что нет прав менять, т.е. почему-то закешировался именно вывод css контекстного меню для всех ролей!?
Пришлось отключить модуль контекст, нельзя ли это поправить?
вы реалиу поставили? она сама по-себе тема не фонтан, перегружена имхо и затачивалась разработчиками темы под риэлторов.
Спасибо, надо будет глянуть что за конфликт с этим модулем.
Кстати сам модуль контекст всё же рекомендую не использовать всё равно - он создает заметную нагрузку . Если верно помню, они контекстные елементы проверяют через проверку элементов пути.
Прошу прощения, модуль контекст у меня тоже стоит, но проблема была не с ним, после включения вашего модуля показывались контекстные ссылки блоков, т.е. те что зависят от ядерного модуля "Contextual links". Именно его пришлось отключить..
Да, я как раз про него. По описанию догадался что речь о нем.
Проблема решилась использованием опции "Use Context Editor Dialog " в модуле контекст.
Теперь и кэширование работает, и контекстные ссылки тоже. И у анонимов все в порядке.
Да тема Realia не очень, почти весь функционал пришлось переделывать, а я еще и модулей добавил, 170 модулей на любую хотелку по модулю.
Интересно узнать отличия размера базы для тестируемого сайта в D8 и D7.