Разные подходы к реализации. Varnish определенно хорош, но бывают задачи, когда его божественного VCL недостаточно для формирования ключа (например необходим запрос к ресурсам сервера).
А вообще данный вопрос может перерасти в холивар:)
ну тогда стоит написать плагин для формирования этого самого ключа, а кешом пусть занимается Varnish. Такой подход применяют для очень крупных сайтов (не только на Вордпрессе), приходилось заниматься подобным для Magento-магазинов
Видимо вы плохо знакомы с функцией ESI, которая позволяет обновлять выборочно блоки на странице в зависимости от ситуации. Например если пользователь залогинен, или если у него в корзине появился товар, то varnish подгрузит и закеширует html блок для конкретного юзера (или группы пользователей). Ведь не зря в Magento используют его для кеширования всего, и никаких проблем с динамическими данными нет вообще.
Magento изначально поддерживает ESI, в WordPress такой возможностей без граблей нет. И по сугубо субъективному мнению между esi и ajax подгрузкой блоков, я бы выбрал второе.
Опять повторюсь, какой смысл обсуждать Varnish и Magento в посте про написание плагина под WordPress?
Не бывает универсальных решений, все зависит от того какие комментарии вы используете, если это дискусс или фейсбук, то нет необходимости инвалидировать кеш. Если вы используете не сторонние комментарии, то есть много решений от ajax до инвалидации кеша всей страници.
Из названия статьи думал, что кеширование будет без php отдавать кеш. Рассмастривали ли вы такой вариант? На какие бы хуки бы вы зацепились, чтобы стартовать вывод в буфер в начале и считать буфер в конце?
Можно отдавать без php, например использовать Varnish. В данной статье описаны средства самого WordPress для реализации кеширования.
Хуки для перехваты буфера указаны статье.
Страничное кеширование в WordPress