Может кто-нибудь объяснить, что varni sh vmod использует следующий закрытый указатель в разных случаях PRIV_CALL, PRIV_TASK, PRIV_TOP, PRIV_VCL? - PullRequest
0 голосов
/ 18 марта 2020

Я хочу сохранить локальное состояние для имени хоста, которое varni sh получает в vmod. какой из указателей PRIV_CALL, PRIV_TASK, PRIV_TOP, PRIV_VCL использовать и какой сценарий? это для понимания.

1 Ответ

0 голосов
/ 19 марта 2020

Я думаю, что было бы полезно прочитать документы для vmod: https://github.com/varnishcache/varnish-cache/blob/master/doc/sphinx/reference/vmod.rst Из документов:

  • PRIV_CALL "per call" частные указатели полезны для кэширования / сохранения состояния относительно вызова спецификаций c или его аргументов, например, скомпилированного регулярного выражения, задающего c для оператора regsub (), или просто для кэширования самого последнего вывода какой-либо дорогостоящей операции. Эти частные указатели действуют в течение загруженного VCL.

  • PRIV_TASK Частные указатели «на задачу» полезны для состояния, которое применяется к вызовам либо для конкретного запроса c, либо к бэкэнду запрос. Например, это может быть результатом синтаксического анализа ie специфика c для клиента. Обратите внимание, что контексты PRIV_TASK являются отдельными для клиентской стороны и серверной части, поэтому использование в vcl_backend_ * приведет к тому, что частный указатель будет отличаться от того, который используется на стороне клиента. Эти частные указатели действуют только на время выполнения своей задачи.

  • PRIV_TOP Частные указатели «на верхний запрос» действуют на время одного запроса и всех его ESI-включений. Они определены только для клиентской стороны. При использовании от внутренних подпрограмм VCL указатель NULL будет передан. Эти частные указатели действуют только на время запроса верхнего уровня.

  • PRIV_VCL "per vcl" частные указатели полезны для такого глобального состояния, которое применяется ко всем вызовам в этом VCL, например флаги которые определяют, являются ли регулярные выражения чувствительными к регистру в этом vmod или аналогичном. Объект PRIV_VCL - это тот же объект, который передается в функцию события VMOD. Этот частный указатель действует в течение всего времени загрузки загруженного VCL.

Я бы, вероятно, сказал, что если вы будете sh отслеживать хост на стороне клиента, то для этого вам нужно использовать priv_task Вы ищете.

...