2015-09-02 2 views
0

Лак (работает на быстро) - кеширует объекты дольше, чем я (думаю, я) указал. Для отладки этой проблемы, я добавляю заголовки везде следующим образом:Отладка лака через заголовки

sub vcl_miss { 
    set req.http.Debugmiss = "vcl_miss"; 
#FASTLY miss 
    return(fetch); 
} 
sub vcl_deliver { 
#FASTLY deliver 
    set resp.http.Debugmiss = req.http.Debugmiss; 
    return(deliver); 
} 

Я сделал это для vcl_recv, vcl_hit, vcl_miss, vcl_pass, vcl_hash и vcl_fetch; однако единственными функциями, которые, как представляется, называются в соответствии с заголовками, являются vcl_recv (что делает поиск) и vcl_deliver. Например, согласно диаграмме состояний() после того, как vcl_recv возвращает код lookup, следует вызвать функцию vcr_hash. Если это так, похоже, он не устанавливает никаких заголовков.

Есть ли что-то, что я пропускаю?

Эти заголовки ответа локон возвращается:

< HTTP/1.1 200 OK 
< Server: Cowboy 
< X-Frame-Options: SAMEORIGIN 
< X-Xss-Protection: 1; mode=block 
< X-Content-Type-Options: nosniff 
< Access-Control-Allow-Origin: * 
< Content-Type: application/json; charset=utf-8 
< Etag: W/"9fbfd39142780bd83fed663b051c83d9" 
< X-Request-Id: a2a9b83a-4143-4b40-b788-94969dd5ce91 
< X-Runtime: 0.020195 
< X-Rack-Cache: miss 
< Via: 1.1 vegur 
< Content-Length: 434 
< Accept-Ranges: bytes 
< Date: Wed, 02 Sep 2015 13:41:41 GMT 
< Via: 1.1 varnish 
< Age: 4 
< Connection: keep-alive 
< X-Served-By: cache-lhr6332-LHR 
< X-Cache: HIT 
< X-Cache-Hits: 1 
< X-Timer: S1441201301.048931,VS0,VE2 
< Cache-Control: no-cache, no-store, private, must-revalidate, max-age=0, max-stale=0, post-check=0, pre-check=0 
< Expires: 0 
< Pragma: no-cache 
< Debugrecv: vcl_recv 
< Debugrecvreturn: lookup 
< debugme: vcl_deliver; desperate8 

Весь VCL можно найти здесь: https://gist.github.com/mdemare/2e0fa52e62691806e0a0

+0

Вы можете добавить полное VCL? – Redithion

+0

Конечно, я добавил vcl. –

ответ

1

Я думаю, что проблема в функциях VCL, где вы установили заголовки для REQ который является объектом запроса, а не ответом. Поэтому, когда вы просматриваете заголовки ответов, те, которые установлены для объекта req, не отображаются.

Вы можете попробовать либо глядя на заголовки запроса или вы можете использовать varnishlog (more info)

+0

В большинстве функций vcl у меня нет доступа на запись к объекту ответа. В строке 'vcl_deliver', строка 317-323, я копирую заголовки запросов в заголовки ответов. Похоже, что эта стратегия работает для функции vcl_recv. –

+1

Я настоятельно рекомендую использовать лак для таких ситуаций. Возможно, таким образом вы даже можете найти, почему заголовки не появляются. – Redithion

Смежные вопросы