% $:.unshift File.expand_path(File.dirname(__FILE__), "/../lib/thinner") DOCS = "documentation/examples/" require 'uv' def code_for(file) return '' unless File.exists?("#{DOCS}#{file}.rb") file = File.open("#{DOCS}#{file}.rb").read Uv.parse(file, "xhtml", "ruby", false, "dawn", false) end %>
Thinner is a utility for purging urls from a Varnish server.
When you are deploying code changes to a server under load, the uncached load can quickly bring down your backend server even with Varnish's grace mode. Often, allowing stale caches to stick around for a while saves both server performance and sanity.
Thinner gives you fine-grained control over wildcard purging, and rolls purges out slowly. Your users will see stale pages from the previous deploy until Thinner has finished invalidating the stale cache at a rate that you set. If you have a bunch of pages you need to invalidate en masse, but don't want to risk overloading your server, Thinner is for you.
All that being said, Thinner isn't really a solution for observing model changes and purging associated urls. If you have a highly dynamic application, it's worlds better to handle purging via a job server outside of the request-response flow.
Thinner is available via rubygems:
gem install thinner
Thinner has both a library and command-line interface. To use it as a gem you'll first have to configure how it works by calling Thinner.configure. Here's a quick rundown of all of the options available:
<%= code_for "configure" %>Once you have the configuration in place call purge! with an array of urls:
<%= code_for "purge" %>Thinner will then fork a background process and purge the urls. You can check the progress of the purge by tailing the log file or with:
varnishlog | grep purge
If ruby's not your cup of tea, Thinner also has a command line interface. Once you've installed the gem run thinner -h to see the available options.
The command line interface accepts a newline separated list of urls via stdin by setting the -e flag. So you'll be able to use the command like so:
cat urls_to_purge.txt | bin/thinner -e
Initial release.