我有一个托管我自己网站的专用服务器。我已经使用默认的VCL文件安装了varnish。现在我想告诉清漆做以下事情:
否则请保持请求不变,以便Apache或任何后端提供服务。
我应该在VCL文件中写什么来达到这些要求?或者我该怎么办?
答案 0 :(得分:2)
您可以在vcl_fetch子例程中执行所有这些操作。这应该被认为是伪代码。
if (beresp.http.content-type ~ "text/javascript|text/css|image/.*") {
if (std.integer(beresp.http.Content-Length,0) < /* max size in bytes here */ ) {
if (beresp.status == 200) { /* backend returned 200 */
set obj.ttl = 86400; /* cache for one day */
return (deliver);
}
}
}
set obj.ttl = 120;
return (hit_for_pass); /* won't be cached */
答案 1 :(得分:2)
我做了什么:
1-将所有静态内容隔离到另一个域(即,为动态页面提供服务的域与提供静态内容的域不同。)
2-为提供静态内容的域分配另一个专用IP地址
3-告诉清漆仅在端口80上侦听该IP(即静态内容IP)
4-使用Apache conf控制每个静态内容类型的缓存周期(varnish将遵循该标头)
缺点:1- Varnish甚至不会听取或处理它应该完好无损的请求。这些请求(对于动态页面)直接发送到Apache,因为Apache监听原始IP(性能)。
2-无需更改默认的VCL默认文件(仅当您要调试时),这对那些不了解VCL语言原理的人有帮助。
3-您正在控制Apache conf。
中的所有内容优点:
1-如果您没有备用IP,则必须购买新的专用IP。
感谢