Я хотел бы защитить внутренний сервер, отправив Squid один запрос на сервер, когда есть промах в кеше для ресурса. Во время выборки другие запросы следует приостановить до тех пор, пока не вернутся отдельные запросы.
Заголовок stale-while-revalidate
почти делает то, что хочу, однако, когда оба раза max-age
и stale-while-revalidate
прошло, нет устаревшего ответа, и на серверную часть будет отправлено несколько запросов.
Директива collapsed_forwarding
кажется, именно то, что я ищу. Но я не могу заставить это работать, как ожидалось, все еще вижу несколько запросов к бэкэнду в течение периода максимального возраста. Я тестирую это с помощью SoapUI 5.2.1 Simple Load Test с 40 потоками.
Моя текущая конфигурация для Squid (3.5.19) - это конфигурация по умолчанию со следующими изменениями:
#Queue incomming requests when a request is send to the backend. I.E. collapse request into a single backend request.
collapsed_forwarding on
# Squid normally listens to port 3128
http_port 3128 accel no-vhost defaultsite=localhost ignore-cc
#Backend requires basic auth
cache_peer 127.0.0.1 parent 53142 0 no-query originserver name=myAccel login=username:password
#Allow caching of files that have a ttl of 1 seconds
minimum_expiry_time 1 seconds
acl our_sites dstdomain localhost
http_access allow our_sites
cache_peer_access myAccel allow our_sites
cache_peer_access myAccel deny all
Запросить URI: /rest/information/bridge/Test?isrs=AB12345
Заголовок ответа Cache-Control no-transform, max-age=2
На данный момент кажется невозможным достичь желаемого эффекта collapsed_rowarding для обратного проксирования. Я задал этот вопрос в списке рассылки squid, в котором был ответ (после отправки некоторого журнала):
Свернутая пересылка пока не применяется к запросам на повторную проверку кеша. Factory работает над реализацией свернутых повторных проверок (в некоторых средах), но я не могу обещать конкретную дату доставки или то, что ваша конкретная среда будет покрыта.
Для получения более подробной информации проверьте список рассылки: http://lists.squid-cache.org/pipermail/squid-users/2016-June/011021.html