提升命中率

现在varnish已经启动并运行,你可以通过varnish来访问您的web应用程序。除非您的应用程序时专门工作在网络加速器之后,您可能需要在varnish的配置或者应用程序上做一些改变,以提升varnish的命中率。

varnish不会缓存你的数据,除非你敢肯定操作是安全的。因此,为了让你理解varnish是如何确定是否缓存和怎样缓存一个页面的。我们将会指引你通过一系列的工具,以便理解在varnish的配置中发生了什么。

注意,你需要一个工具去查看在varnish和后端之间的http头。在varnish服务器上,做到这一点最简单的方法是使用varnishlog和varnishtop。但是有时候客户端的工具也是有意义的。下面是一些我们经常使用的:

varnishtop

你可以使用varnishtop去查看哪些url命中了后端服务器。varnishtop -i BereqURL是一个有用的命令,可以为你展示varnish正发送到后端服务器的请求。你可以在统计查看一些其他的varnishtop的例子的使用。

varnishlog

你可以使用varnishlog来查看发送到后端服务器最频繁的url。varnishlog -q 'ReqURL ~ "^/foo/bar"'将会为你展示来自客户端的能够匹配上 /foo/bar 的请求。

想查看更多关于varnishlog如何工作的信息可以查看varnish日志或者帮助man页面。

要扩展http头,可以查看https://www.varnish-cache.org/trac/wiki/VCLExampleHitMissHeader

lwp-request

lwp-request是一个Perl的万维网库中的工具。这是一些可以执行http请求并向你展示结果的基础程序。我们最常用的两个是GET和HEAD。

vg.no是使用varnish的第一个网站。

$ GET -H 'Host: www.vg.no' -Used http://vg.no/
GET http://vg.no/
Host: www.vg.no
User-Agent: lwp-request/5.834 libwww-perl/5.834

200 OK
Cache-Control: must-revalidate
Refresh: 600
Title: VG Nett - Forsiden - VG Nett
X-Age: 463
X-Cache: HIT
X-Rick-Would-Never: Let you down
X-VG-Jobb: http://www.finn.no/finn/job/fulltime/result?keyword=vg+multimedia Merk:HeaderNinja
X-VG-Korken: http://www.youtube.com/watch?v=Fcj8CnD5188
X-VG-WebCache: joanie
X-VG-WebServer: leon

OK,让我们看一下GET做了什么。GET经常发送缺少HOst头的HTTP 0.9请求。因此我们通过-H参数添加Host头。-U打印请求头,-s打印响应状态,-e打印响应头,-d丢弃实际的内容。我们真的不关心内容,只关心头。

你可以看到,vg在他们的头中添加了很多的信息。一些头信息,像X-Rick-Would-Never有几分奇怪,其他的,像X-VG-Webcache则是出于调试目的。

因此,如果要查看对于一个特殊的url是否设置了cookie,可以这样做:

GET -Used http://example.com/ |grep ^Set-Cookie

Live HTTP Headers

也有一个firefox浏览器插件叫做 Live HTTP Headers 。这个插件可以展示发送和收到的头信息。可以到https://addons.mozilla.org/en-US/firefox/addon/3829/找这个插件或者直接谷歌“Live HTTP Headers”。

HTTP头的角色

随着每一个http请求和响应携带着一些头meta信息。varnish将会通过这些头信息确定内容是否适合缓存和缓存多长时间。

请注意,Varnish认为自己是真正的web服务器,因为它属于您控制。

接下来让我们看一些你需要了解的重要头信息。

results matching ""

    No results matching ""