- Author
Dag Haavi Finstad
- Date
2013-12-02
- Version
1.0
- Manual section
3
import test304;
Lets you detect if the current response will end up as a 304 Not Modified. Must only be used in vcl_deliver.
The 304 logic in Varnish depends on whether or not any of the relevant headers were altered in vcl_deliver, so in general we can't know until after vcl_deliver if this response will end up as a 304.
To rely on the result from the test304() function, you must not alter either of the following after the call:
req.http.if-modified-since
req.http.if-none-match
Varnish uses the headers of the fetched object (not the copy in resp.http.*) when deciding if it will do a 304, so stripping off resp.http.etag or resp.http.last-modified in vcl_deliver will prevent the client from seeing these, but will not prevent Varnish from serving a 304.
- Prototype
test304()
- Return value
BOOL
- Description
Returns true if this response will end up as a 304. Do not invoke this from outside of vcl_deliver.
- Example
:
- sub vcl_deliver {
- if (test304.test304()) {
set resp.http.foo = "this is a 304";
}
}
The source tree is based on autotools to configure the building, and does also have the necessary bits in place to do functional unit tests using the varnishtest tool.
Usage:
autoreconf -vif
./configure VARNISHSRC=DIR [VMODDIR=DIR]
VARNISHSRC is the directory of the Varnish source tree for which to compile your vmod. Both the VARNISHSRC and VARNISHSRC/include will be added to the include search paths for your module.
Optionally you can also set the vmod install directory by adding VMODDIR=DIR (defaults to the pkg-config discovered directory from your Varnish installation).
Make targets:
- make - builds the vmod
- make install - installs your vmod in VMODDIR
- make check - runs the unit tests in
src/tests/*.vtc
This document is licensed under the same license as the libvmod-example project. See LICENSE for details.
- Copyright (c) 2011 Varnish Software