从Varnish高效交付维护页面

时间:2014-05-07 13:41:01

标签: varnish varnish-vcl

我已经配置了一个清漆实例,以便在无法访问后端服务器而不是默认的guru冥想页面时提供自定义维护页面。提供维护页面的子例程与此类似:

sub deliver_maintainance_page
{

   set obj.http.Content-Type = "text/html; charset=utf-8";

   synthetic {" 
     <!DOCTYPE html>
     <html dir="ltr">
        ...
     </html>
   "};

   return(deliver);
}

缺少的html(点)还包括使用数据uri方案(http://en.wikipedia.org/wiki/Data_URI_scheme)嵌入的图像和字体资源。文件的总重量约为208 kb。

这真的是提供自定义维护页面的最佳方式吗?

1 个答案:

答案 0 :(得分:1)

我为自定义维护页面做了两件事。我使用CDN或图像主机(请参阅Amazon S3,CloudFlare,Akamai,Imgur等)来托管页面上的所有图像(对于我推荐CDN的大型网站,CloudFlare有免费计划)。然后我将页面的HTML移动到外部文件中,并使用内置于Varnish中的std.fileread。 E.g:

import std;

sub deliver_maintainance_page
{
   set obj.http.Content-Type = "text/html; charset=utf-8";

   synthetic std.fileread("/var/www/errors/503.html");

   return(deliver);
}

这会清理您的VCL文件并减少页面重量(不再有内嵌图像)。