Назад | Перейти на главную страницу

Методы лакирования коротким замыканием без пропуска встроенных методов

При настройке Varnish 4 меня интересует короткое замыкание внутри vcl_recv, но я не хочу пропускать логика builtin.vcl (урожденная default.vcl) VCL. Например, учитывая этот псевдокод VCL:

sub vcl_recv {
    if (somecondition1) {
        set some_thing;
        return (hash); # Return from cache if present, or fetch from the backend
    }

    if (somecondition2) {
        set some_other_thing;
        return (hash); # Return from cache if present, or fetch from the backend
    }

    // ...

    return (pass); # Skip cache, fetch from the backend
}

Вопрос 1

Если я звоню return во всех возможных путях кода, тогда встроенная логика будут пропущены, право?

вопрос 2

Есть ли способ отформатировать код, аналогичный приведенному выше, но не пропуская логику builtin.vcl? Единственный способ, которым я могу это видеть, - это объединить мои условные выражения, логические ! их, и переместите return (pass); внутри гиганта if.

1) Да

2) Вся суть возврата заключается в том, что вы пропускаете части кода, останавливаете его выполнение через ненужный код (хеширование, передача, отсутствие). Если вам нужно запустить его, либо
а) Скопируйте код, который вам нужно выполнить перед возвратом или
б) Используйте массивную обертку if.

Лично я стараюсь дублировать и заменять все встроенные vcl для всего, кроме самых простых сайтов, так я могу получить действительно высокие показатели посещаемости (98% +).