我使用vcl hash基于请求中的某些标头值缓存对象的多个副本。我如何一次清除它们?
答案 0 :(得分:1)
我的回答是基于您真正想要清除#include <iostream>
using namespace std;
int main()
{
int i = 0;
cout << "enter a number: ";
/* Test the truthiness of cin after the text entry
if the user didnt enter an int value the test
will return false.
*/
if(! (cin >> i) )
{
cout << "didnt enter a number\n";
return 0;
}
/* now use knowing value must be int */
switch(i)
{
case 1:
cout << "one\n";
break;
// more number cases
default:
cout << "some other num\n";
break;
}
}
而不是PURGE
的假设:
如果已知某个标头的所有可能值,您将使用重新启动以及设置自定义标头。逻辑如下:
BAN
PURGE
请求
req.http.X-Custom == foo
return(purge)
中设置vcl_purge
,并使用已清除的值集引入/调整帮助程序标头,并req.http.X-Custom = bar
因此,Varnish将递归清除所有对象。
您可以在complete Brotli VCL implementation中看到此方法的示例。
但是如果某个标题的值确实是任意的,那么您不能同时真正地return (restart)
它们。如果您需要这个,您必须使用PURGE
,以便Varnish将所有这些对象视为具有多种变体的对象。在Vary: X-Custom
到位的情况下,您不必在标题上进行哈希,并且Vary
在一个变体上将有效清除所有其他变体。
我更喜欢PURGE
方法。