目录
The Varnish cache system
Your Simple Hosting instance (or VPS with a configured Web Accelerator) benefits from a powerful cache system that works with Varnish. This allows you to distribute the content of your website to a larger number of visitors without using the resources of your instance or VPS.
For example, a website visitor requests a file from your web server 'foo.jpg'. This file is then placed into the Varnish cache so that when the next visitor requests the same image, the image is served from the Varnish cache, relieving your web server from needing reply to the request.
Modify or deactivate the cache period
The default period an item will remain in the cache is 120 seconds. If you'd like to change this, you can do so by adding the following header and varying the value of max-age (in seconds):
HTTP Cache-Control: public, max-age=200
For example, in php:
header("Cache-Control: max-age=200");
Or in an .htaccess file if it is a static website:
Header add Cache-Control "max-age=200"
Purging cache using HTTP 'PURGE'/'PURGEALL' request
It is possible to purge a particular URL cache by sending an HTTP PURGE request. You can also purge the entire cache with an HTTP PURGEALL request.
Here are a some examples:
curl -X PURGE http://www.example.com/test/index.html curl -X PURGEALL http://www.example.com/
Alternatively, here is a PHP script that can be called from a browser to clear a particular URL cache:
<?php /* purge.php * Purge a URL on this host */ header("Cache-Control: max-age=1"); // don't cache ourself error_reporting(E_ALL); ini_set("display_errors", 1); // Set to true to hide varnish result define("SILENT", false); $path = isset($_GET["path"]) ? $_GET["path"] : ""; $purge_url = "http://" . $_SERVER["HTTP_HOST"] . "/$path"; if ( $ch = curl_init($purge_url) ) { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PURGE"); curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); curl_setopt($ch, CURLOPT_NOBODY, SILENT); curl_exec($ch); curl_close($ch); } ?>
Purging cache from web interface
It is possible to purge the cache directly from your instance's administration page.
To do this, once you are on your instance's control panel, scroll down to the “Access” table, and where it says “Administration of your instance”, click on “Login”.
You will then be prompted for your user name (this is your instance's ID) and password (defined when you created the instance):
Once logged in, find the “Varnish” section, and click on the link to purge all objects in cache.
If you see “200 = OK” then this means that the purge was successful.
Purging cache when deploying a git branch
For Simple Hosting instances that are utilizing the built-in git repository, executing the deploy command will automatically perform a PURGEALL at the end of the deployment process.
mod_expires
Your instance includes the enabled mod_expires module in Apache2, which allows you to set custom expiration dates for cached items based on either the time the source file was last modified, or to the time of the client access.
You can use the directive “ExpiresDefault”” to set an expiration time for all cached items, or you can set the expiration time for specific file-types using “ExpiresByType”.
For more information please see the mod_expires Apache2 documentation
Cookie Stripping
The following cookies are stripped by Varnish:
cookies.vcl # # sanitize cookies # sub vcl_recv { if (req.http.Cookie) { # Remove unwanted cookies set by javascript for external services # try to track origin # __utm* _ga _gat: Google Analytics, __gads: Google Adsense # __qca __qcb: Quantcast # _jsuid: GetClicky # __cfduid: CloudFare # __unam __switchTo5x: ShareThis # __atuvc: AddThis (_atshc also?) set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)_(ga(|t)|jsuid|_(utm[a-z]+|gads|qc(a|b)|cfduid|unam|switchTo5x|atuvc))=[^;]*", ""); # Cleanup set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", ""); if (req.http.Cookie == "") { unset req.http.Cookie; } } # Track filtered cookie to analyse, can be removed #std.log("cookie:" + req.http.Cookie); }