2017-01-12 7 views
1

Может ли кто-нибудь объяснить следующий код vcl.Что делает hash_data vcl_hash?

sub vcl_hash { 
    hash_data(req.url); 

    if (req.http.host) { 
     hash_data(req.http.host); 
    } else { 
     hash_data(server.ip); 
    } 

    if (req.http.Cookie) { 
     hash_data(req.http.Cookie); 
    } 
} 

Я понимаю только хэширование моего req.url с использованием функции hash_data в качестве ключа кеша. Следующий, если код else будет неопределенным для меня.

Пожалуйста, помогите. Thnx.

ответ

2

Метод hash_data используется для настройки хэша, другими словами, ключа, кэшированного объекта. Этот ключ используется для сравнения объекта с объектами, уже находящимися в кеше.

В коде, который вы публикуете, первое, что считается для хэша, является URL-адрес запрашиваемой страницы: req.url.

Но обратите внимание, что если лак используется только URL для хеширования объекта было бы слишком расплывчатым и может привести к тому же кэш доставляются на разные сайты, как www.example.com/test_url и www.example2. com/test_url.

Для того чтобы избежать этой проблемы, она будет добавить хост (req.http.host) в хэш, если он существует, если не будет добавить IP (server.ip) вместо, например, http://192.168.0.1/test_url.

Наконец, он проверит наличие Cookies и добавит их в хэш, если они это сделают. Это делается, когда страницы показывают различный контент на основе файлов cookie.

+0

В третьем абзаце вашего комментария. Можно ли использовать один лак на другом сайте? –

+1

Уверенный лак - это обратный прокси-сервер, он получает запросы и отправляет их на разные серверы/сайты. –

+1

@JohnRoca, как заявил Бенджамин, возможно, и конфигурация вопроса уже готова для разных сайтов. – alejdg

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

  • Нет связанных вопросов^_^