Drupal 7 & Varnish 4 - я всегда получаю X-Drupal-Cache: MISS, но X-Cache: HIT

Я столкнулся с той же проблемой, что и этот человек: X-Drupal-Cache для Drupal 7 всегда попадает в MISS и не может найти выход.

Я использую Drupal 7 - Pressflow

а также

Лак 4.0

Когда я скручиваюсь, я получаю этот результат:

TTP/1.1 200 OK
Date: Fri, 08 Jul 2016 17:45:08 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Set-Cookie: __cfduid=db5fd757e7485622ac16af86f292603f51467999908; expires=Sat, 08-Jul-17 17:45:08 GMT; path=/; domain=.adland.tv; HttpOnly
X-Content-Type-Options: nosniff
**X-Drupal-Cache: MISS**
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Cache-Control: public, max-age=86400
X-Content-Type-Options: nosniff
Content-Language: en
X-Generator: Drupal 7 (http://drupal.org)
Last-Modified: Fri, 08 Jul 2016 17:41:27 GMT
Vary: Accept-Encoding
X-Varnish: 196743 3
Age: 213
Via: 1.1 varnish-v4
**X-Cache: HIT**
X-Cache-Hits: 22
Server: cloudflare-nginx
CF-RAY: 2bf55922d49b23d8-IAD

isvarnishworking.com говорит мне: "Вы заслуживаете золотую звезду, вот и все: значок золотой звезды"....

В то время как "Varnish Indicator Chrome Extension", предложенный в связанной ветке Drupal org, говорит мне, что Varnish пропущен, на каждой странице моего сайта, независимо от того, вошел я в систему или нет.

Если я отключу кеш Drupal для анонимных пользователей при admin/config/development/performance, Varnish не будет работать вообще. Если я установлю другое минимальное время жизни кэша, это не имеет значения.

В моем settings.php у меня есть это:

$conf['varnish_version'] = 4;
$conf['reverse_proxy'] = True;
$conf['reverse_proxy_addresses'] = array('127.0.0.1');
$conf['page_cache_invoke_hooks'] = FALSE;
$conf['page_cache_maximum_age'] = 86400;
$conf['cache_backends'][] = 'sites/all/modules/varnish/varnish.cache.inc';
$conf['cache_class_cache_page'] = 'VarnishCache';
$conf['reverse_proxy_header'] = 'HTTP_X_FORWARDED_FOR';
$conf['omit_vary_cookie'] = True;
$conf['drupal_http_request_fails'] = FALSE;

и это

 $conf['cache_backends'][] = 'sites/all/modules/filecache/filecache.inc';
 $conf['cache_backends'][] = 'sites/all/modules/authcache/authcache.cache.inc';
 $conf['cache_backends'][] = 'sites/all/modules/authcache/modules/authcache_builtin/authcache_builtin.cache.inc';
 $conf['cache_class_cache_page'] = 'DrupalFileCache';

в то время как это было закомментировано из конфигурации Varnish в settings.php, потому что, если я этого не сделаю, Varnish завершится неудачно:

//$conf['cache'] = 1;
//$conf['cache_lifetime'] = 01080;

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

Используемый мной VCL извлекается прямо из этого мастера github с минимальными изменениями.

Как я могу устранить эту проблемуX-Drupal-Cache: проблема MISS?

1 ответ

Ваш бэкэнд явно отправляет куки:

Set-Cookie: __cfduid=db5fd757e7485622ac16af86f292603f51467999908; expires=Sat, 08-Jul-17 17:45:08 GMT; path=/; domain=.adland.tv; HttpOnly

В конфигурации по умолчанию Varnish не будет кэшировать объект, поступающий из серверной части с присутствующим заголовком Set-Cookie. Кроме того, если клиент отправляет заголовок Cookie, Varnish обходит кеш и переходит непосредственно к бэкэнду.

Другие вопросы по тегам