使用Varnish做代理缓存的基本原理
Varnish是一个高速HTTP反向代理程序。它从客户端接收请求并且尝试从缓存中直接返回。如果Varnish不能通过缓存返回结果,那么它将会请求后台服务器,获取到服务器响应之后,将结果缓存下来并返回给客户端。
当Varnish已有缓存来响应请求,一般响应速度都是毫秒级别的,并且比请求后台服务器要快两个数量级,因此你可以通过varnish来响应更多的请求。
Varnish会自己决定是通过缓存直接返回,还是请求后台服务器来获取结果。后台服务器可以让varnish缓存内容,并携带http响应头Cache-Control。也有一些条件下varnish是不会缓存,最常见的情况是使用了Cookie。因为Cookie是一个特殊的客户端网络对象,Varnish默认不会缓存它。
大多数的Varnish功能都可以通过使用Varnish配置语言(VCL)修改配置来实现。通过查看Varnish用户指南可以获取更多信息。
性能
Varnish拥有更加现在的架构,并且在创造时就把性能考虑在内。它通过提升响应速度来有效的解决性能问题。这样你就可以专注于你的web应用程序如何工作,在一定程度上也不用太在意性能和可扩展性。
灵活性
Varnish的优势除了性能之外还有配置语言(VCL)的灵活性。VCL允许你来书写请求的处理规则。
在这些规则中,你可以定义你想从哪里获取内容并且还可以定义怎样去修改请求和响应的信息。
支持的平台
Varnish可以运行在新版本的Linux和FreeBSD上面,并且在这些平台都得到了很好的实践。 也感谢我们的贡献者们让它也运行在NetBSD、OpenBSD、OS X 和各种Solaris系列系统(例如Oracle Solaris, OmniOS和SmartOS)上面。