<% $:.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 -- Version <%= File.read('VERSION') %>  

Thinner – Version <%= File.read('VERSION') %>

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.

API docs | Issue Tracker

Installation

Thinner is available via rubygems:

gem install thinner

Usage

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

Change Log

0.1.0

Initial release.