{"id":332,"date":"2013-01-10T03:33:49","date_gmt":"2013-01-10T03:33:49","guid":{"rendered":"c042f4db68f23406c6cecf84a7ebb0fe"},"modified":"2013-01-10T03:33:49","modified_gmt":"2013-01-10T03:33:49","slug":"","status":"publish","type":"post","link":"https:\/\/www.xiaobo.li\/notes\/archives\/332","title":{"rendered":"varnish \u53c2\u6570\u8bf4\u660e"},"content":{"rendered":"<p><span style=\"color:#ff0000;\"><strong><span style=\"font-size:small;\">vcl_init<\/span><\/strong><\/span> <\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">Called&nbsp;when&nbsp;VCL&nbsp;is&nbsp;loaded,&nbsp;before&nbsp;any&nbsp;requests&nbsp;pass&nbsp;through&nbsp;it.&nbsp;Typically&nbsp;used&nbsp;to&nbsp;initialize&nbsp;VMODs.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">\u5f53VCL\u52a0\u8f7d\u65f6\u8c03\u7528\uff0c\u4e4b\u540e\u52a0\u8f7d\u5ba2\u6237\u8bf7\u6c42\u3002\u4e00\u822c\u7528\u4e8e\u521d\u59cb\u5316VMOD\u6a21\u5757\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">return()&nbsp;values:<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">\u8fd4\u56de\u503c\u6709\uff1a<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>ok&nbsp;<\/strong>Normal&nbsp;return,&nbsp;VCL&nbsp;continues&nbsp;loading.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">OK&nbsp;\u6b63\u5e38\u8fd4\u56de\u503c\uff0c\u8fd4\u56deOK\u540eVCL\u52a0\u8f7d\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong><span style=\"color:#ff0000;\">vcl_recv<\/span><\/strong><\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">Called&nbsp;at&nbsp;the&nbsp;beginning&nbsp;of&nbsp;a&nbsp;request,&nbsp;after&nbsp;the&nbsp;complete&nbsp;request&nbsp;has&nbsp;been&nbsp;received&nbsp;and&nbsp;parsed.&nbsp;<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">Its&nbsp;purpose&nbsp;is&nbsp;to&nbsp;decide&nbsp;whether&nbsp;or&nbsp;not&nbsp;to&nbsp;serve&nbsp;the&nbsp;request,&nbsp;how&nbsp;to&nbsp;do&nbsp;it,&nbsp;and,&nbsp;if&nbsp;applicable,&nbsp;<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">which&nbsp;backend&nbsp;to&nbsp;use.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">\u5728\u8bf7\u6c42\u5b8c\u5168\u63a5\u6536\u5e76\u89e3\u6790\u5b8c\u4e4b\u540e\uff0c\u4ece\u8bf7\u6c42\u7684\u5f00\u59cb\u5904\u8c03\u7528\uff0c\u4ed6\u7684\u76ee\u7684\u662f\u51b3\u5b9a\u662f\u5426\u5904\u7406\u8bf7\u6c42\uff0c\u600e\u4e48\u5904\u7406\u8bf7\u6c42\uff0c\u6216\u8005\u5982\u679c\u540e\u7aef\u6709\u591a\u4e2a\u670d\u52a1\u5668\u7684\u8bdd\uff0c\u51b3\u5b9a\u53bb\u8c03\u7528\u54ea\u4e2a\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">The&nbsp;vcl_recv&nbsp;subroutine&nbsp;may&nbsp;terminate&nbsp;with&nbsp;calling&nbsp;return()&nbsp;on&nbsp;one&nbsp;of&nbsp;the&nbsp;following&nbsp;keywords:<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">vcl_recv\u5b50\u7a0b\u5e8f\u53ef\u4ee5\u901a\u8fc7\u8c03\u7528\u4ee5\u4e0b\u5173\u952e\u5b57\u901a\u8fc7return()\u6765\u7ec8\u6b62\u5904\u7406\uff1a<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>error&nbsp;code&nbsp;[reason]<\/strong>Return&nbsp;the&nbsp;specified&nbsp;error&nbsp;code&nbsp;to&nbsp;the&nbsp;client&nbsp;and&nbsp;abandon&nbsp;the&nbsp;request.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">error&nbsp;code&nbsp;[reason]&nbsp;&nbsp;\u7ed9\u5ba2\u6237\u7aef\u8fd4\u56de\u6307\u5b9a\u7684\u9519\u8bef\u4ee3\u7801\u5e76\u4e22\u5f03\u8bf7\u6c42\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>pass<\/strong>&nbsp;&nbsp;Switch&nbsp;to&nbsp;pass&nbsp;mode.&nbsp;Control&nbsp;will&nbsp;eventually&nbsp;pass&nbsp;to&nbsp;vcl_pass.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">pass&nbsp;&nbsp;\u4f20\u9001\u5230pass\u6a21\u5f0f\uff0c\u63a7\u5236\u6743\u5c06\u6700\u7ec8\u4ea4\u7ed9vcl_pass.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>pipe&nbsp;<\/strong>&nbsp;&nbsp;Switch&nbsp;to&nbsp;pipe&nbsp;mode.&nbsp;Control&nbsp;will&nbsp;eventually&nbsp;pass&nbsp;to&nbsp;vcl_pipe.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><span>pipe&nbsp;&nbsp;\u4f20\u9001\u5230pipe\u6a21\u5f0f\uff0c\u63a7\u5236\u6743\u5c06\u6700\u7ec8\u4ea4\u7ed9vcl_pipe.<\/span>\n<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>lookup&nbsp;<\/strong>&nbsp;&nbsp;Look&nbsp;up&nbsp;the&nbsp;requested&nbsp;object&nbsp;in&nbsp;the&nbsp;cache.&nbsp;Control&nbsp;will&nbsp;eventually&nbsp;pass&nbsp;to&nbsp;vcl_hit&nbsp;or&nbsp;vcl_miss,&nbsp;<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">depending&nbsp;on&nbsp;whether&nbsp;the&nbsp;object&nbsp;is&nbsp;in&nbsp;the&nbsp;cache.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">lookup&nbsp;&nbsp;\u4ece\u7f13\u5b58\u4e2d\u67e5\u627e\u5bf9\u8c61\uff0c\u63a7\u5236\u6743\u5c06\u6700\u7ec8\u4ea4\u7ed9vcl_hit\u6216\u8005vcl_miss\uff0c\u8fd9\u53d6\u51b3\u4e8e\u662f\u5426\u4ece\u7f13\u5b58\u4e2d\u547d\u4e2d\u5bf9\u8c61\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong><span style=\"color:#ff0000;\">vcl_pipe<\/span><\/strong><\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">Called&nbsp;upon&nbsp;entering&nbsp;pipe&nbsp;mode.&nbsp;In&nbsp;this&nbsp;mode,&nbsp;the&nbsp;request&nbsp;is&nbsp;passed&nbsp;on&nbsp;to&nbsp;the&nbsp;backend,&nbsp;and&nbsp;any&nbsp;further&nbsp;<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">data&nbsp;from&nbsp;either&nbsp;client&nbsp;or&nbsp;backend&nbsp;is&nbsp;passed&nbsp;on&nbsp;unaltered&nbsp;until&nbsp;either&nbsp;end&nbsp;closes&nbsp;the&nbsp;connection.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">\u5f53\u8fdb\u5165pipe\u6a21\u5f0f\u65f6\u8c03\u7528\uff0c\u5728\u8fd9\u4e2a\u6a21\u5f0f\u4e0b\uff0c\u8bf7\u6c42\u88ab\u9001\u5230\u540e\u7aef\u670d\u52a1\u5668\uff0c\u4e4b\u540e\u7684\u7684\u6240\u6709\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u7aef\u7684\u8bf7\u6c42\u5c06\u4e00\u76f4\u4ee5\u540c\u6837\u7684\u65b9\u5f0f\u4f20\u8f93\uff0c\u76f4\u5230\u8fde\u63a5\u5173\u95ed\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">The&nbsp;vcl_pipe&nbsp;subroutine&nbsp;may&nbsp;terminate&nbsp;with&nbsp;calling&nbsp;return()&nbsp;with&nbsp;one&nbsp;of&nbsp;the&nbsp;following&nbsp;keywords:<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><span>vcl_pipe\u5b50\u7a0b\u5e8f\u53ef\u4ee5\u901a\u8fc7\u8c03\u7528\u4ee5\u4e0b\u5173\u952e\u5b57\u901a\u8fc7<\/span><span>return()\u6765\u7ec8\u6b62\u5904\u7406\uff1a<\/span>\n<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>error&nbsp;code&nbsp;[reason]&nbsp;<\/strong>&nbsp;Return&nbsp;the&nbsp;specified&nbsp;error&nbsp;code&nbsp;to&nbsp;the&nbsp;client&nbsp;and&nbsp;abandon&nbsp;the&nbsp;request.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>pipe<\/strong>&nbsp;Proceed&nbsp;with&nbsp;pipe&nbsp;mode.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong><span style=\"color:#ff0000;\">vcl_pass<\/span><\/strong><\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">Called&nbsp;upon&nbsp;entering&nbsp;pass&nbsp;mode.&nbsp;In&nbsp;this&nbsp;mode,&nbsp;the&nbsp;request&nbsp;is&nbsp;passed&nbsp;on&nbsp;to&nbsp;the&nbsp;backend,&nbsp;and&nbsp;the<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">&nbsp;backend's&nbsp;response&nbsp;is&nbsp;passed&nbsp;on&nbsp;to&nbsp;the&nbsp;client,&nbsp;but&nbsp;is&nbsp;not&nbsp;entered&nbsp;into&nbsp;the&nbsp;cache.&nbsp;Subsequent&nbsp;requests&nbsp;sub\u2010&nbsp;mitted&nbsp;over&nbsp;the&nbsp;same&nbsp;client&nbsp;connection&nbsp;are&nbsp;handled&nbsp;normally.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">\u8fdb\u5165pass\u6a21\u5f0f\u65f6\u8c03\u7528\uff0c\u5728\u8fd9\u4e2a\u6a21\u5f0f\u4e0b\uff0c\u8bf7\u6c42\u88ab\u76f4\u63a5\u9001\u5230\u540e\u7aef\uff0c\u540e\u7aef\u8fd4\u56de\u7684\u6570\u636e\u88ab\u76f4\u63a5\u8fd4\u56de\u5230\u5ba2\u6237\u7aef\uff0c\u5e76\u4e14\u4e0d\u52a0\u5165\u7f13\u5b58\u4e2d\uff0c\u4e4b\u540e\u7684\u8bf7\u6c42\u5c06\u4ee5\u540c\u6837\u7684\u65b9\u5f0f\u52a0\u4ee5\u5904\u7406\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">The&nbsp;vcl_pass&nbsp;subroutine&nbsp;may&nbsp;terminate&nbsp;with&nbsp;calling&nbsp;return()&nbsp;with&nbsp;one&nbsp;of&nbsp;the&nbsp;following&nbsp;keywords:<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><span>vcl_piass\u5b50\u7a0b\u5e8f\u53ef\u4ee5\u901a\u8fc7\u8c03\u7528\u4ee5\u4e0b\u5173\u952e\u5b57\u901a\u8fc7<\/span><span>return()\u6765\u7ec8\u6b62\u5904\u7406\uff1a<\/span>\n<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>error&nbsp;code&nbsp;[reason]&nbsp;<\/strong>&nbsp;Return&nbsp;the&nbsp;specified&nbsp;error&nbsp;code&nbsp;to&nbsp;the&nbsp;client&nbsp;and&nbsp;abandon&nbsp;the&nbsp;request.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>pass&nbsp;&nbsp;<\/strong>Proceed&nbsp;with&nbsp;pass&nbsp;mode.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>restart<\/strong>Restart&nbsp;the&nbsp;transaction.&nbsp;Increases&nbsp;the&nbsp;restart&nbsp;counter.&nbsp;If&nbsp;the&nbsp;number&nbsp;of&nbsp;restarts&nbsp;is&nbsp;higher&nbsp;than&nbsp;<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><em style=\"font-style:italic;\">max_restarts<\/em>&nbsp;varnish&nbsp;emits&nbsp;a&nbsp;guru&nbsp;meditation&nbsp;error.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">restart&nbsp;\u91cd\u65b0\u5f00\u59cb\u4e8b\u52a1\u3002\u589e\u52a0\u91cd\u542f\u8ba1\u6570\u5668\uff0c\u5982\u679c\u8ba1\u6570\u5668\u7684\u503c\u5927\u4e8emax_restarts\u6307\u5b9a\u7684\u503c\uff0cvarnish\u53d1\u51fa\u4e00\u4e2a\u4e25\u91cd\u9519\u8bef\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong><span style=\"color:#ff0000;\">vcl_hash<\/span><\/strong><\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">You&nbsp;may&nbsp;call&nbsp;hash_data()&nbsp;on&nbsp;the&nbsp;data&nbsp;you&nbsp;would&nbsp;like&nbsp;to&nbsp;add&nbsp;to&nbsp;the&nbsp;hash.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">\u4f60\u53ef\u4ee5\u5728\u4f60\u60f3\u52a0\u5165hash\u7684\u6570\u636e\u4e2d\u53bb\u8c03\u7528hash_data().<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">The&nbsp;vcl_hash&nbsp;subroutine&nbsp;may&nbsp;terminate&nbsp;with&nbsp;calling&nbsp;return()&nbsp;with&nbsp;one&nbsp;of&nbsp;the&nbsp;following&nbsp;keywords:<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><span>vcl_hash\u5b50\u7a0b\u5e8f\u53ef\u4ee5\u901a\u8fc7\u8c03\u7528\u4ee5\u4e0b\u5173\u952e\u5b57\u901a\u8fc7<\/span><span>return()\u6765\u7ec8\u6b62\u5904\u7406\uff1a<\/span>\n<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>hash<\/strong>&nbsp;Proceed.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">hash&nbsp;\u5f00\u59cbhash\u6570\u636e\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong><span style=\"color:#ff0000;\">vcl_hit<\/span><\/strong><\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">Called&nbsp;after&nbsp;a&nbsp;cache&nbsp;lookup&nbsp;if&nbsp;the&nbsp;requested&nbsp;document&nbsp;was&nbsp;found&nbsp;in&nbsp;the&nbsp;cache.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">\u5982\u679c\u6570\u636e\u4ece\u7f13\u5b58\u4e2d\u627e\u5230\u5219\u8c03\u7528vcl_hit.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">The&nbsp;vcl_hit&nbsp;subroutine&nbsp;may&nbsp;terminate&nbsp;with&nbsp;calling&nbsp;return()&nbsp;with&nbsp;one&nbsp;of&nbsp;the&nbsp;following&nbsp;keywords:<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><span>vcl_hit\u5b50\u7a0b\u5e8f\u53ef\u4ee5\u901a\u8fc7\u8c03\u7528\u4ee5\u4e0b\u5173\u952e\u5b57\u901a\u8fc7<\/span><span>return()\u6765\u7ec8\u6b62\u5904\u7406\uff1a<\/span>\n<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>deliver&nbsp;&nbsp;<\/strong>Deliver&nbsp;the&nbsp;cached&nbsp;object&nbsp;to&nbsp;the&nbsp;client.&nbsp;Control&nbsp;will&nbsp;eventually&nbsp;pass&nbsp;to&nbsp;vcl_deliver.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">deliver&nbsp;\u628a\u7f13\u5b58\u547d\u4e2d\u7684\u6570\u636e\u4f20\u9001\u7ed9\u5ba2\u6237\u7aef&nbsp;\uff0c\u63a7\u5236\u6743\u5c06\u6700\u7ec8\u4ea4\u7ed9vcl_deliver.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>error&nbsp;code&nbsp;[reason]&nbsp;&nbsp;&nbsp;<\/strong>Return&nbsp;the&nbsp;specified&nbsp;error&nbsp;code&nbsp;to&nbsp;the&nbsp;client&nbsp;and&nbsp;abandon&nbsp;the&nbsp;request.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>pass&nbsp;&nbsp;&nbsp;<\/strong>Switch&nbsp;to&nbsp;pass&nbsp;mode.&nbsp;Control&nbsp;will&nbsp;eventually&nbsp;pass&nbsp;to&nbsp;vcl_pass.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>restart<\/strong>&nbsp;&nbsp;Restart&nbsp;the&nbsp;transaction.&nbsp;Increases&nbsp;the&nbsp;restart&nbsp;counter.&nbsp;If&nbsp;the&nbsp;number&nbsp;of&nbsp;restarts&nbsp;is&nbsp;higher&nbsp;than&nbsp;<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><em style=\"font-style:italic;\">max_restarts<\/em>&nbsp;varnish&nbsp;emits&nbsp;a&nbsp;guru&nbsp;meditation&nbsp;error.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong><span style=\"color:#ff0000;\">vcl_miss<\/span><\/strong><\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">Called&nbsp;after&nbsp;a&nbsp;cache&nbsp;lookup&nbsp;if&nbsp;the&nbsp;requested&nbsp;document&nbsp;was&nbsp;not&nbsp;found&nbsp;in&nbsp;the&nbsp;cache.&nbsp;Its&nbsp;purpose&nbsp;is&nbsp;to&nbsp;<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">decide&nbsp;whether&nbsp;or&nbsp;not&nbsp;to&nbsp;attempt&nbsp;to&nbsp;retrieve&nbsp;the&nbsp;document&nbsp;from&nbsp;the&nbsp;backend,&nbsp;and&nbsp;which&nbsp;backend&nbsp;to&nbsp;use.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">\u5982\u679c\u6570\u636e\u6ca1\u6709\u4ece\u7f13\u5b58\u4e2d\u627e\u5230\u5219\u8c03\u7528vcl_miss.\u5b83\u7684\u76ee\u7684\u662f\u51b3\u5b9a\u662f\u5426\u5c1d\u8bd5\u4ece\u540e\u7aef\u670d\u52a1\u5668\u68c0\u7d22\u6570\u636e\uff0c\u5982\u679c\u6709\u591a\u4e2a\u540e\u7aef\u670d\u52a1\u5668\u7684\u8bdd\uff0c\u51b3\u5b9a\u8c03\u7528\u54ea\u4e2a\u540e\u7aef\u670d\u52a1\u5668\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">The&nbsp;vcl_miss&nbsp;subroutine&nbsp;may&nbsp;terminate&nbsp;with&nbsp;calling&nbsp;return()&nbsp;with&nbsp;one&nbsp;of&nbsp;the&nbsp;following&nbsp;keywords:<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><span>vcl_miss\u5b50\u7a0b\u5e8f\u53ef\u4ee5\u901a\u8fc7\u8c03\u7528\u4ee5\u4e0b\u5173\u952e\u5b57\u901a\u8fc7<\/span><span>return()\u6765\u7ec8\u6b62\u5904\u7406\uff1a<\/span>\n<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>error&nbsp;code&nbsp;[reason]&nbsp;&nbsp;<\/strong>Return&nbsp;the&nbsp;specified&nbsp;error&nbsp;code&nbsp;to&nbsp;the&nbsp;client&nbsp;and&nbsp;abandon&nbsp;the&nbsp;request.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>pass&nbsp;<\/strong>&nbsp;&nbsp;Switch&nbsp;to&nbsp;pass&nbsp;mode.&nbsp;Control&nbsp;will&nbsp;eventually&nbsp;pass&nbsp;to&nbsp;vcl_pass.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>fetch<\/strong>&nbsp;&nbsp;Retrieve&nbsp;the&nbsp;requested&nbsp;object&nbsp;from&nbsp;the&nbsp;backend.&nbsp;Control&nbsp;will&nbsp;eventually&nbsp;pass&nbsp;to&nbsp;vcl_fetch.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">fetch&nbsp;\u4ece\u540e\u7aef\u670d\u52a1\u5668\u68c0\u7d22\u6570\u636e\uff0c\u63a7\u5236\u6743\u5c06\u6700\u7ec8\u4ea4\u7ed9vcl_fetch.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong><span style=\"color:#ff0000;\">vcl_fetch<\/span><\/strong><\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">Called&nbsp;after&nbsp;a&nbsp;document&nbsp;has&nbsp;been&nbsp;successfully&nbsp;retrieved&nbsp;from&nbsp;the&nbsp;backend.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">\u5f53\u6570\u636e\u6210\u529f\u7684\u4ece\u540e\u7aef\u670d\u52a1\u5668\u68c0\u7d22\u5230\u4e4b\u540e\u8c03\u7528\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">The&nbsp;vcl_fetch&nbsp;subroutine&nbsp;may&nbsp;terminate&nbsp;with&nbsp;calling&nbsp;return()&nbsp;with&nbsp;one&nbsp;of&nbsp;the&nbsp;following&nbsp;keywords:<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><span>vcl_fetch\u5b50\u7a0b\u5e8f\u53ef\u4ee5\u901a\u8fc7\u8c03\u7528\u4ee5\u4e0b\u5173\u952e\u5b57\u901a\u8fc7<\/span><span>return()\u6765\u7ec8\u6b62\u5904\u7406\uff1a<\/span>\n<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>deliver<\/strong>&nbsp;&nbsp;Possibly&nbsp;insert&nbsp;the&nbsp;object&nbsp;into&nbsp;the&nbsp;cache,&nbsp;then&nbsp;deliver&nbsp;it&nbsp;to&nbsp;the&nbsp;client.&nbsp;Control&nbsp;will&nbsp;eventually&nbsp;<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">pass&nbsp;to&nbsp;vcl_deliver.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">deliver&nbsp;\u5c3d\u53ef\u80fd\u7684\u628a\u6570\u636e\u52a0\u5165\u7f13\u5b58\uff0c\u7136\u540e\u4f20\u8f93\u7ed9\u5ba2\u6237\u7aef&nbsp;\uff0c\u63a7\u5236\u6743\u5c06\u6700\u7ec8\u4ea4\u7ed9vcl_deliver.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>error&nbsp;code&nbsp;[reason]&nbsp;&nbsp;&nbsp;&nbsp;<\/strong>Return&nbsp;the&nbsp;specified&nbsp;error&nbsp;code&nbsp;to&nbsp;the&nbsp;client&nbsp;and&nbsp;abandon&nbsp;the&nbsp;request.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>hit_for_pass&nbsp;<\/strong>&nbsp;Pass&nbsp;in&nbsp;fetch.&nbsp;This&nbsp;will&nbsp;create&nbsp;a&nbsp;hit_for_pass&nbsp;object.&nbsp;Note&nbsp;that&nbsp;the&nbsp;TTL&nbsp;for&nbsp;the&nbsp;hit_for_pass&nbsp;<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">object&nbsp;will&nbsp;be&nbsp;set&nbsp;to&nbsp;what&nbsp;the&nbsp;current&nbsp;value&nbsp;of&nbsp;beresp.ttl.&nbsp;Control&nbsp;will&nbsp;be&nbsp;handled&nbsp;to&nbsp;vcl_deliver&nbsp;on&nbsp;the&nbsp;<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">current&nbsp;request,&nbsp;but&nbsp;subsequent&nbsp;requests&nbsp;will&nbsp;go&nbsp;directly&nbsp;to&nbsp;vcl_pass&nbsp;based&nbsp;on&nbsp;the&nbsp;hit_for_pass&nbsp;object.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">hit_for_pass&nbsp;\u8fdb\u5165fetch.\u5b83\u5c06\u521b\u5efa\u4e00\u4e2ahit_for_pass\u5bf9\u8c61\uff0chit_for_pass\u5bf9\u8c61\u7684TTL\u503c\u5c06\u4f1a\u88ab\u8bbe\u7f6e\u6210beresp.ttl\u7684\u5f53\u524d\u503c\u3002\u8be5\u8bf7\u6c42\u7684\u63a7\u5236\u6743\u5c06\u4ea4\u7ed9vcl_deliver\u6765\u5904\u7406\uff0c\u4e4b\u540e\u8bf7\u6c42\u5c06\u76f4\u63a5\u4ea4\u7ed9vcl_pass\uff0c\u53d6\u51b3\u4e8ehit_for_pass\u5bf9\u8c61\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>restart&nbsp;<\/strong>&nbsp;Restart&nbsp;the&nbsp;transaction.&nbsp;Increases&nbsp;the&nbsp;restart&nbsp;counter.&nbsp;If&nbsp;the&nbsp;number&nbsp;of&nbsp;restarts&nbsp;is&nbsp;higher&nbsp;<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">than&nbsp;<em style=\"font-style:italic;\">max_restarts<\/em>&nbsp;varnish&nbsp;emits&nbsp;a&nbsp;guru&nbsp;meditation&nbsp;error.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong><span style=\"color:#ff0000;\">vcl_deliver<\/span><\/strong><\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">Called&nbsp;before&nbsp;a&nbsp;cached&nbsp;object&nbsp;is&nbsp;delivered&nbsp;to&nbsp;the&nbsp;client.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">\u5728\u6570\u636e\u4f20\u8f93\u5230\u5ba2\u6237\u7aef\u4e4b\u524d\u88ab\u8c03\u7528\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">The&nbsp;vcl_deliver&nbsp;subroutine&nbsp;may&nbsp;terminate&nbsp;with&nbsp;one&nbsp;of&nbsp;the&nbsp;following&nbsp;keywords:<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><span>vcl_deliver\u5b50\u7a0b\u5e8f\u53ef\u4ee5\u901a\u8fc7\u8c03\u7528\u4ee5\u4e0b\u5173\u952e\u5b57\u901a\u8fc7<\/span><span>return()\u6765\u7ec8\u6b62\u5904\u7406\uff1a<\/span>\n<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>deliver&nbsp;<\/strong>&nbsp;Deliver&nbsp;the&nbsp;object&nbsp;to&nbsp;the&nbsp;client.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">deliver&nbsp;\u628a\u5bf9\u8c61\u4f20\u8f93\u5230\u5ba2\u6237\u7aef\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>error&nbsp;code&nbsp;[reason]&nbsp;&nbsp;&nbsp;<\/strong>Return&nbsp;the&nbsp;specified&nbsp;error&nbsp;code&nbsp;to&nbsp;the&nbsp;client&nbsp;and&nbsp;abandon&nbsp;the&nbsp;request.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>restart&nbsp;&nbsp;&nbsp;<\/strong>Restart&nbsp;the&nbsp;transaction.&nbsp;Increases&nbsp;the&nbsp;restart&nbsp;counter.&nbsp;If&nbsp;the&nbsp;number&nbsp;of&nbsp;restarts&nbsp;is&nbsp;higher&nbsp;<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">than&nbsp;<em style=\"font-style:italic;\">max_restarts<\/em>&nbsp;varnish&nbsp;emits&nbsp;a&nbsp;guru&nbsp;meditation&nbsp;error.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong><span style=\"color:#ff0000;\">vcl_error<\/span><\/strong><\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">Called&nbsp;when&nbsp;we&nbsp;hit&nbsp;an&nbsp;error,&nbsp;either&nbsp;explicitly&nbsp;or&nbsp;implicitly&nbsp;due&nbsp;to&nbsp;backend&nbsp;or&nbsp;internal&nbsp;errors.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">The&nbsp;vcl_error&nbsp;subroutine&nbsp;may&nbsp;terminate&nbsp;by&nbsp;calling&nbsp;return&nbsp;with&nbsp;one&nbsp;of&nbsp;the&nbsp;following&nbsp;keywords:<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><span>vcl_error\u5b50\u7a0b\u5e8f\u53ef\u4ee5\u901a\u8fc7\u8c03\u7528\u4ee5\u4e0b\u5173\u952e\u5b57\u901a\u8fc7<\/span><span>return()\u6765\u7ec8\u6b62\u5904\u7406\uff1a<\/span>\n<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>deliver<\/strong>&nbsp;&nbsp;Deliver&nbsp;the&nbsp;error&nbsp;object&nbsp;to&nbsp;the&nbsp;client.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>restart&nbsp;<\/strong>&nbsp;&nbsp;Restart&nbsp;the&nbsp;transaction.&nbsp;Increases&nbsp;the&nbsp;restart&nbsp;counter.&nbsp;If&nbsp;the&nbsp;number&nbsp;of&nbsp;restarts&nbsp;is&nbsp;higher&nbsp;than&nbsp;<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><em style=\"font-style:italic;\">max_restarts<\/em>&nbsp;varnish&nbsp;emits&nbsp;a&nbsp;guru&nbsp;meditation&nbsp;error.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong><span style=\"color:#ff0000;\">vcl_fini<\/span><\/strong><\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">Called&nbsp;when&nbsp;VCL&nbsp;is&nbsp;discarded&nbsp;only&nbsp;after&nbsp;all&nbsp;requests&nbsp;have&nbsp;exited&nbsp;the&nbsp;VCL.&nbsp;Typically&nbsp;used&nbsp;to&nbsp;clean&nbsp;up&nbsp;VMODs.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">return()&nbsp;values:<\/p>\n<p><strong style=\"line-height:21px;widows:2;text-transform:none;background-color:#ffffff;font-variant:normal;font-style:normal;text-indent:0px;letter-spacing:normal;font-family:tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;font-size:14px;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">ok<\/strong><span style=\"widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;letter-spacing:normal;display:inline !important;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;float:none;color:#454545;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">&nbsp;Normal&nbsp;return,&nbsp;VCL&nbsp;will&nbsp;be&nbsp;discarded.<\/span><\/p>\n<p><span style=\"widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;letter-spacing:normal;display:inline !important;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;float:none;color:#454545;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">------------------------------------------<\/span><\/p>\n<p><span style=\"widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;letter-spacing:normal;display:inline !important;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;float:none;color:#454545;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><span style=\"color:#000000;\">\u542f\u52a8\u811a\u672c<br \/>\n #!\/bin\/bash<br \/>\n### BEGIN INIT INFO<br \/>\n# Author: JeremyWei<br \/>\n# Date: 2011.8.27<br \/>\n# Description: Varnish management<br \/>\n### END INIT INFO<\/p>\n<p>prefix=\/usr\/local\/varnish<br \/>\nvarnish_bin=${prefix}\/sbin\/varnishd<br \/>\nstorage=2000M<br \/>\nvarnish_opts=\"-f ${prefix}\/etc\/varnish\/default.vcl -T 127.0.0.1:2000 -a 0.0.0.0:80 -s file,\/tmp,${storage}\"<\/p>\n<p>case \"$1\" in<br \/>\n&nbsp;&nbsp;&nbsp; start)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo -n \"Starting varnish......\"<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $varnish_bin $varnish_opts<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ \"$?\" != 0 ] ; then<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo \" failed\"<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit 1<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo \" done\"<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<\/p>\n<p>&nbsp;&nbsp;&nbsp; stop)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo -n \"Shutting down Varnish......\"<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pkill varnishd<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ \"$?\" != 0 ] ; then<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo \" failed\"<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit 1<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo \" done\"<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<\/p>\n<p>&nbsp;&nbsp;&nbsp; restart)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $0 stop<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $0 start<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<\/p>\n<p>&nbsp;&nbsp;&nbsp; *)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo \"Usage: $0 {start|stop|restart}\"<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit 1<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br \/>\nesac<\/p>\n<p>Subroutine\u5217\u8868<br \/>\n \u2022vcl_recv<br \/>\n \u5728\u8bf7\u6c42\u5f00\u59cb\u65f6\u5019\u88ab\u8c03\u7528\uff0c\u5728\u8bf7\u6c42\u5df2\u7ecf\u88ab\u63a5\u6536\u5230\u5e76\u4e14\u89e3\u6790\u540e\u8c03\u7528\u3002\u76ee\u7684\u5c31\u662f\u51b3\u5b9a\u662f\u5426\u5904\u7406\u8fd9\u4e2a\u8bf7\u6c42\uff0c\u600e\u4e48\u5904\u7406\uff0c\u4f7f\u7528\u54ea\u4e2a\u540e\u7aef\u3002vcl_recv\u4ee5return\u7ed3\u675f\uff0c\u53c2\u6570\u53ef\u4ee5\u4e3a\u5982\u4e0b\u5173\u952e\u5b57\uff1a<br \/>\n error code [reason]\uff1a\u8fd4\u56de\u9519\u8bef\u7801\u7ed9\u5ba2\u6237\u7aef\uff0c\u4e22\u5f03\u8bf7\u6c42\u3002<br \/>\n pass\uff1a\u8f6c\u6362\u5230pass\u6a21\u5f0f\u3002\u63a7\u5236\u6743\u6700\u540e\u4f1a\u8f6c\u79fb\u5230vcl_pass\u3002<br \/>\n pipe\uff1a\u8f6c\u6362\u5230pipe\u6a21\u5f0f\u3002\u63a7\u5236\u6743\u6700\u540e\u4f1a\u8f6c\u79fb\u5230vcl_pipe\u3002<br \/>\n lookup\uff1a\u5728\u7f13\u5b58\u4e2d\u5bfb\u627e\u8bf7\u6c42\u5bf9\u8c61\u3002\u63a7\u5236\u6743\u6700\u540e\u4f1a\u8f6c\u79fb\u5230vcl_hit\u6216\u8005vcl_miss\uff0c\u51b3\u5b9a\u4e8e\u5bf9\u8c61\u662f\u5426\u5728\u7f13\u5b58\u4e2d\u3002<br \/>\n \u2022vcl_pipe<br \/>\n \u5f53\u8fdb\u5165pipe\u6a21\u5f0f\u7684\u65f6\u5019\u88ab\u8c03\u7528\u3002\u5728\u8fd9\u4e2a\u6a21\u5f0f\u4e2d\uff0c\u8bf7\u6c42\u4f1a\u88ab\u8f6c\u79fb\u5230\u540e\u7aef\uff0c\u540e\u7eed\u7684\u6570\u636e\u4e0d\u7ba1\u662f\u4ece\u5ba2\u6237\u7aef\u8fd8\u662f\u540e\u7aef\u6765\u7684\u90fd\u4f1a\u4ee5\u4e0d\u53d8\u7684\u65b9\u5f0f\u4f20\u9001\uff0c\u76f4\u5230\u8fde\u63a5\u5173\u95ed\u4e3a\u6b62\u3002vcl_pipe\u4ee5return\u7ed3\u675f\uff0c\u53c2\u6570\u53ef\u4ee5\u4e3a\u5982\u4e0b\u5173\u952e\u5b57\uff1a<br \/>\n error code [reason]\uff1a\u8fd4\u56de\u9519\u8bef\u7801\u7ed9\u5ba2\u6237\u7aef\uff0c\u4e22\u5f03\u8bf7\u6c42\u3002<br \/>\n pipe\uff1a\u4ee5pipe\u6a21\u5f0f\u6267\u884c\u3002<br \/>\n \u2022vcl_pass<br \/>\n \u5f53\u8fdb\u5165pass\u6a21\u5f0f\u7684\u65f6\u5019\u4f1a\u88ab\u8c03\u7528\u3002\u5728\u8fd9\u4e2a\u6a21\u5f0f\u4e2d\uff0c\u8bf7\u6c42\u4f1a\u88ab\u4f20\u9001\u5230\u540e\u7aef\uff0c\u7136\u540e\u540e\u7aef\u7684\u54cd\u5e94\u4f1a\u88ab\u4f20\u9001\u56de\u5ba2\u6237\u7aef\uff0c\u4f46\u662f\u54cd\u5e94\u4e0d\u4f1a\u8fdb\u5165\u7f13\u5b58\u4e2d\u3002\u63a5\u4e0b\u6765\u901a\u8fc7\u76f8\u540c\u5ba2\u6237\u7aef\u8fde\u63a5\u53d1\u8d77\u7684\u8bf7\u6c42\u4f1a\u4ee5\u666e\u901a\u7684\u65b9\u5f0f\u6765\u5904\u7406\u3002vcl_pass\u4ee5return\u7ed3\u675f\uff0c\u53c2\u6570\u53ef\u4ee5\u4e3a\u5982\u4e0b\u5173\u952e\u5b57\uff1a<br \/>\n error code [reason]\uff1a\u8fd4\u56de\u9519\u8bef\u7801\u7ed9\u5ba2\u6237\u7aef\uff0c\u4e22\u5f03\u8bf7\u6c42\u3002<br \/>\n pass\uff1a\u4ee5pass\u6a21\u5f0f\u6267\u884c\u3002<br \/>\n restart\uff1a\u91cd\u65b0\u542f\u52a8\u8fd9\u4e2a\u4e8b\u52a1\u3002\u589e\u52a0\u4e86\u91cd\u542f\u8ba1\u6570\u3002\u5982\u679c\u91cd\u542f\u7684\u6b21\u6570\u9ad8\u4e8emax_restarts\uff0cvarnish\u4f1a\u5f15\u8d77\u4e00\u4e2a\u9519\u8bef\u3002<br \/>\n \u2022vcl_hash<br \/>\n \u4f60\u5982\u679c\u628a\u60f3\u628a\u6570\u636e\u52a0\u5165\u5230hash\u4e2d\uff0c\u90a3\u4e48\u8c03\u7528hash_data()\u3002vcl_hash\u4ee5return\u7ed3\u675f\uff0c\u53c2\u6570\u53ef\u4ee5\u4e3a\u5982\u4e0b\u5173\u952e\u5b57\uff1a<br \/>\n hash\uff1a\u6267\u884chash\u903b\u8f91\u3002<br \/>\n \u2022vcl_hit<br \/>\n \u5982\u679c\u8bf7\u6c42\u7684\u5bf9\u8c61\u5728\u7f13\u5b58\u4e2d\u88ab\u627e\u5230\u4e86\uff0c\u90a3\u4e48\u5728\u7f13\u5b58\u67e5\u627e\u7ed3\u675f\u540e\u88ab\u8c03\u7528\u3002vcl_hit\u4ee5return\u7ed3\u675f\uff0c\u53c2\u6570\u53ef\u4ee5\u4e3a\u5982\u4e0b\u5173\u952e\u5b57\uff1a<br \/>\n deliver\uff1adeliver\u7f13\u5b58\u5bf9\u8c61\u5230\u5ba2\u6237\u7aef\u3002\u63a7\u5236\u6743\u6700\u540e\u4f1a\u8f6c\u79fb\u5230vcl_deliver\u3002<br \/>\n error code [reason]\uff1a\u8fd4\u56de\u9519\u8bef\u7801\u7ed9\u5ba2\u6237\u7aef\uff0c\u4e22\u5f03\u8bf7\u6c42\u3002<br \/>\n pass\uff1a\u5207\u6362\u5230pass\u6a21\u5f0f\u3002\u63a7\u5236\u6743\u6700\u540e\u4f1a\u8f6c\u79fb\u5230vcl_pass\u3002<br \/>\n restart\uff1a\u91cd\u65b0\u542f\u52a8\u8fd9\u4e2a\u4e8b\u52a1\u3002\u589e\u52a0\u4e86\u91cd\u542f\u8ba1\u6570\u3002\u5982\u679c\u91cd\u542f\u7684\u6b21\u6570\u9ad8\u4e8emax_restarts\uff0cvarnish\u4f1a\u5f15\u8d77\u4e00\u4e2a\u9519\u8bef\u3002<br \/>\n \u2022vcl_miss<br \/>\n \u5982\u679c\u8bf7\u6c42\u7684\u5bf9\u8c61\u5728\u7f13\u5b58\u4e2d\u6ca1\u6709\u88ab\u627e\u5230\uff0c\u90a3\u4e48\u5728\u7f13\u5b58\u67e5\u627e\u7ed3\u675f\u540e\u88ab\u8c03\u7528\u3002\u76ee\u7684\u662f\u4e3a\u4e86\u51b3\u5b9a\u662f\u5426\u53bb\u540e\u7aef\u83b7\u53d6\u8fd9\u4e2a\u8bf7\u6c42\u5bf9\u8c61\uff0c\u5e76\u4e14\u8981\u9009\u62e9\u54ea\u4e2a\u540e\u7aef\u3002vcl_miss\u4ee5return\u7ed3\u675f\uff0c\u53c2\u6570\u53ef\u4ee5\u4e3a\u5982\u4e0b\u5173\u952e\u5b57\uff1a<br \/>\n error code [reason]\uff1a\u8fd4\u56de\u9519\u8bef\u7801\u7ed9\u5ba2\u6237\u7aef\uff0c\u4e22\u5f03\u8bf7\u6c42\u3002<br \/>\n pass\uff1a\u5207\u6362\u5230pass\u6a21\u5f0f\u3002\u63a7\u5236\u6743\u6700\u540e\u4f1a\u8f6c\u79fb\u5230vcl_pass\u3002<br \/>\n fetch\uff1a\u53bb\u540e\u7aef\u83b7\u53d6\u8bf7\u6c42\u5bf9\u8c61\u3002\u63a7\u5236\u6743\u6700\u540e\u4f1a\u8f6c\u79fb\u5230vcl_fetch\u3002<br \/>\n \u2022vcl_fetch<br \/>\n \u5f53\u4e00\u4e2a\u5bf9\u8c61\u88ab\u6210\u529f\u4ece\u540e\u7aef\u83b7\u53d6\u7684\u65f6\u5019\u6b64\u65b9\u6cd5\u4f1a\u88ab\u8c03\u7528\u3002vcl_fetch\u4ee5return\u7ed3\u675f\uff0c\u53c2\u6570\u53ef\u4ee5\u4e3a\u5982\u4e0b\u5173\u952e\u5b57\uff1a<br \/>\n deliver\uff1a\u53ef\u80fd\u628a\u5bf9\u8c61\u653e\u5165\u7f13\u5b58\u4e2d\uff0c\u7136\u540e\u518ddeliver\u5230\u5ba2\u6237\u7aef\u3002\u63a7\u5236\u6743\u6700\u540e\u4f1a\u8f6c\u79fb\u5230vcl_deliver\u3002<br \/>\n error code [reason]\uff1a\u8fd4\u56de\u9519\u8bef\u7801\u7ed9\u5ba2\u6237\u7aef\uff0c\u4e22\u5f03\u8bf7\u6c42\u3002<br \/>\n esi\uff1a\u4ee5ESI\u5f62\u5f0f\u6765\u5904\u7406\u521a\u521a\u88ab\u83b7\u53d6\u5230\u7684\u5bf9\u8c61\u3002<br \/>\n pass\uff1a\u5207\u6362\u5230pass\u6a21\u5f0f\u3002\u63a7\u5236\u6743\u6700\u540e\u4f1a\u8f6c\u79fb\u5230vcl_pass\u3002<br \/>\n restart\uff1a\u91cd\u65b0\u542f\u52a8\u8fd9\u4e2a\u4e8b\u52a1\u3002\u589e\u52a0\u4e86\u91cd\u542f\u8ba1\u6570\u3002\u5982\u679c\u91cd\u542f\u7684\u6b21\u6570\u9ad8\u4e8emax_restarts\uff0cvarnish\u4f1a\u5f15\u8d77\u4e00\u4e2a\u9519\u8bef\u3002<br \/>\n \u2022vcl_deliver<br \/>\n \u5f53\u4e00\u4e2a\u7f13\u5b58\u7684\u5bf9\u8c61\u88abdeliver\u5230\u5ba2\u6237\u7aef\u7684\u65f6\u5019\uff0c\u6b64\u65b9\u6cd5\u4f1a\u88ab\u8c03\u7528\u3002vcl_deliver\u4ee5return\u7ed3\u675f\uff0c\u53c2\u6570\u53ef\u4ee5\u4e3a\u5982\u4e0b\u5173\u952e\u5b57\uff1a<br \/>\n deliver\uff1a\u53d1\u9001\u5bf9\u8c61\u5230\u5ba2\u6237\u7aef\u3002<br \/>\n error code [reason]\uff1a\u8fd4\u56de\u9519\u8bef\u7801\u7ed9\u5ba2\u6237\u7aef\uff0c\u4e22\u5f03\u8bf7\u6c42\u3002<br \/>\n restart\uff1a\u91cd\u65b0\u542f\u52a8\u8fd9\u4e2a\u4e8b\u52a1\uff0c\u589e\u52a0\u91cd\u542f\u8ba1\u6570\u3002\u5982\u679c\u91cd\u542f\u7684\u6b21\u6570\u9ad8\u4e8emax_restarts\uff0cvarnish\u4f1a\u5f15\u8d77\u4e00\u4e2a\u9519\u8bef\u3002<br \/>\n \u2022vcl_error<br \/>\n \u5f53\u9047\u89c1\u4e00\u4e2a\u9519\u8bef\u7684\u65f6\u5019\u4f1a\u88ab\u8c03\u7528\uff0c\u9519\u8bef\u53ef\u80fd\u662f\u8ddf\u540e\u7aef\u6709\u5173\u7cfb\u6216\u8005\u5185\u90e8\u9519\u8bef\u3002vcl_error\u4ee5return\u7ed3\u675f\uff0c\u53c2\u6570\u53ef\u4ee5\u4e3a\u5982\u4e0b\u5173\u952e\u5b57\uff1a<br \/>\n deliver\uff1a\u53d1\u9001\u5bf9\u8c61\u5230\u5ba2\u6237\u7aef\u3002<br \/>\n restart\uff1a\u91cd\u65b0\u542f\u52a8\u8fd9\u4e2a\u4e8b\u52a1\uff0c\u589e\u52a0\u91cd\u542f\u8ba1\u6570\u3002\u5982\u679c\u91cd\u542f\u7684\u6b21\u6570\u9ad8\u4e8emax_restarts\uff0cvarnish\u4f1a\u5f15\u8d77\u4e00\u4e2a\u9519\u8bef\u3002<\/p>\n<p>\u91cd\u8981\u53d8\u91cf<\/p>\n<p>subroutine\u4e0d\u5e26\u53c2\u6570\uff0c\u4e00\u822c\u901a\u8fc7\u5168\u5c40\u53d8\u91cf\u6765\u5b9e\u73b0\u4fe1\u606f\u7684\u4f20\u9012\u3002<\/p>\n<p>\u5982\u4e0b\u53d8\u91cf\u5728backend\u4e2d\u6709\u6548\uff1a<br \/>\n \u2022.host\uff1abackend\u7684\u4e3b\u673a\u540d\u6216\u8005IP\u3002<br \/>\n \u2022.port\uff1abackend\u7684\u7aef\u53e3\u3002<\/p>\n<p>\u5982\u4e0b\u53d8\u91cf\u5728\u5904\u7406\u4e00\u4e2a\u8bf7\u6c42\uff08\u4f8b\u5982vcl_recv\uff09\u7684\u65f6\u5019\u53ef\u7528\uff1a<br \/>\n \u2022client.ip\uff1a\u5ba2\u6237\u7aefIP\u5730\u5740\u3002<br \/>\n \u2022server.hostname\uff1a\u670d\u52a1\u5668\u7684\u4e3b\u673a\u540d\u3002<br \/>\n \u2022server.identity\uff1a\u670d\u52a1\u5668\u6807\u793a\uff0c\u5f53\u542f\u52a8varnish\u7684\u65f6\u5019\u7528\u201d-i\u201d\u53c2\u6570\u6765\u6307\u5b9a\u3002\u5982\u679cvarnish\u542f\u52a8\u65f6\u5019\u6ca1\u6709\u6307\u5b9a\u201d-i\u201d\u53c2\u6570\uff0c\u90a3\u4e48server.identity\u4f1a\u88ab\u8bbe\u7f6e\u4e3a\u7528\u201d-n\u201d\u53c2\u6570\u6240\u6307\u5b9a\u7684\u5b9e\u4f8b\u540d\u79f0\u3002<br \/>\n \u2022server.ip\uff1a\u670d\u52a1\u5668IP\u5730\u5740\u3002<br \/>\n \u2022server.port\uff1a\u670d\u52a1\u5668\u7aef\u53e3\u3002<br \/>\n \u2022req.request\uff1a\u8bf7\u6c42\u7c7b\u578b\uff08\u4f8b\u5982\u201cGET\u201d\uff0c\u201cHEAD\u201d\uff09\u3002<br \/>\n \u2022req.url\uff1a\u8bf7\u6c42\u7684URL\u3002<br \/>\n \u2022req.proto\uff1aHTTP\u534f\u8bae\u7248\u672c\u3002<br \/>\n \u2022req.backend\uff1a\u5904\u7406\u8bf7\u6c42\u7684\u540e\u7aef\u670d\u52a1\u5668\u3002<br \/>\n \u2022req.backend.healthy\uff1a\u540e\u7aef\u662f\u5426\u5065\u5eb7\u3002health check\u9700\u8981\u5728backend\u7684probe\u4e2d\u8fdb\u884c\u8bbe\u7f6e\u3002<br \/>\n \u2022req.http.header\uff1a\u76f8\u5173\u7684HTTP\u5934\u3002<br \/>\n \u2022req.hash_always_miss\uff1a\u5f3a\u8feb\u5bf9\u4e8e\u672c\u6b21\u8bf7\u6c42\u7684\u7f13\u5b58\u67e5\u627e\u7ed3\u679c\u4e3amiss\u3002\u5982\u679c\u8bbe\u7f6e\u4e3a\u201dtrue\u201d\uff0c\u90a3\u4e48varnish\u5c06\u4f1a\u5ffd\u7565\u4efb\u4f55\u5b58\u5728\u7684\u7f13\u5b58\u5bf9\u8c61\uff0c\u4e00\u76f4\u4ece\u540e\u7aef\u91cd\u65b0\u83b7\u53d6\u8d44\u6e90\u3002<br \/>\n \u2022req.hash_ignore_busy\uff1a\u5728\u7f13\u5b58\u67e5\u627e\u65f6\u5019\u5ffd\u7565\u4efb\u4f55\u5fd9\u7684\u5bf9\u8c61\u3002\u5982\u679c\u6709\u4e24\u4e2a\u670d\u52a1\u5668\uff0c\u5f7c\u6b64\u4e92\u76f8\u67e5\u627e\u7f13\u5b58\u5185\u5bb9\uff0c\u90a3\u4e48\u53ef\u4ee5\u4f7f\u7528\u8fd9\u4e2a\u53d8\u91cf\u6765\u907f\u514d\u6f5c\u5728\u7684\u6b7b\u9501\u3002<\/p>\n<p>\u5982\u4e0b\u53d8\u91cf\u5728\u51c6\u5907\u4e00\u4e2a\u540e\u7aef\u8bf7\u6c42(\u6bd4\u5982\u5728cache miss\u6216\u8005pass,pipe\u6a21\u5f0f)\u7684\u65f6\u5019\u53ef\u7528\uff1a<br \/>\n \u2022bereq.request\uff1a\u8bf7\u6c42\u7684\u7c7b\u578b\uff08\u6bd4\u5982\u201cGET\u201d\uff0c\u201cHEAD\u201d\uff09\u3002<br \/>\n \u2022bereq.url\uff1a\u8bf7\u6c42\u7684URL\u3002<br \/>\n \u2022bereq.proto\uff1a\u4e0e\u540e\u7aef\u670d\u52a1\u5668\u4ea4\u4e92\u7684HTTP\u534f\u8bae\u7248\u672c\u3002<br \/>\n \u2022bereq.http.header\uff1a\u76f8\u5173\u7684HTTP\u5934\u3002<br \/>\n \u2022bereq.connect_timeout\uff1a\u4e0e\u540e\u7aef\u8fde\u63a5\u7684\u8d85\u65f6\u65f6\u95f4\u3002<br \/>\n \u2022bereq.first_byte_timeout\uff1a\u4ece\u540e\u7aef\u8fd4\u56de\u7b2c\u4e00\u4e2a\u5b57\u8282\u6240\u9700\u7b49\u5f85\u7684\u79d2\u6570\uff0c\u5728pipe\u6a21\u5f0f\u4e2d\u4e0d\u53ef\u7528\u3002<br \/>\n \u2022bereq.between_bytes_timeout\uff1a\u4ece\u540e\u7aef\u8fd4\u56de\u7684\u6bcf\u4e2a\u5b57\u8282\u4e4b\u95f4\u7684\u65f6\u95f4\u95f4\u9694\uff0c\u4ee5\u79d2\u8ba1\u3002\u5728pipe\u6a21\u5f0f\u4e2d\u4e0d\u53ef\u7528\u3002<\/p>\n<p>\u5982\u4e0b\u7684\u53d8\u91cf\u5728\u8bf7\u6c42\u5bf9\u8c61\u4ece\u540e\u7aef\u8fd4\u56de\u4e4b\u540e\uff0c\u5728\u5176\u88ab\u653e\u5165\u7f13\u5b58\u4e4b\u524d\u53ef\u7528\u3002\u6362\u53e5\u8bdd\u8bf4\uff0c\u4e5f\u5c31\u662f\u5728vcl_fetch\u4e2d\u53ef\u7528\u3002<br \/>\n \u2022beresp.proto\uff1aHTTP\u534f\u8bae\u7248\u672c\u3002<br \/>\n \u2022beresp.status\uff1a\u540e\u7aef\u8fd4\u56de\u7684HTTP\u72b6\u6001\u7801\uff08\u4f8b\u5982200,302\u7b49\uff09\u3002<br \/>\n \u2022beresp.response\uff1a\u540e\u7aef\u8fd4\u56de\u7684\u72b6\u6001\u5185\u5bb9\uff08\u4f8b\u5982\u201cOK\u201d\uff0c\u201cFound\u201d\uff09\u3002<br \/>\n \u2022beresp.cacheable\uff1a\u5982\u679c\u8bf7\u6c42\u7684\u7ed3\u679c\u662f\u53ef\u4ee5\u88ab\u7f13\u5b58\u7684\uff0c\u90a3\u4e48\u6b64\u53d8\u91cf\u4e3a\u201dtrue\u201d\u3002\u5982\u679cHTTP\u72b6\u6001\u7801\u4e3a200, 203, 300, 301, 302, 404\uff0c410\u4e4b\u4e00\u5e76\u4e14pass\u6ca1\u6709\u5728vcl_recv\u4e2d\u88ab\u8c03\u7528\uff0c\u90a3\u4e48\u8fd9\u4e2a\u7ed3\u679c\u5c31\u662f\u53ef\u4ee5\u88ab\u7f13\u5b58\u7684\u3002\u5982\u679cresponse\u7684TTL\u548cgrace time\u90fd\u4e3a0\uff0c\u90a3\u4e48beresp.cacheable\u5c06\u4f1a\u4e3a0\u3002beresp.cacheable\u662f\u53ef\u5199\u7684\u3002<br \/>\n \u2022beresp.ttl\uff1a\u7f13\u5b58\u5bf9\u8c61\u7684\u751f\u5b58\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\uff0c\u8fd9\u4e2a\u53d8\u91cf\u662f\u53ef\u5199\u7684\u3002<\/p>\n<p>\u5728\u5bf9\u8c61\u5df2\u7ecf\u5b58\u5728\u4e8e\u7f13\u5b58\u4e2d\u5e76\u88ab\u67e5\u8be2\u5230\u7684\u65f6\u5019\uff0c\u4e00\u822c\u5728vcl_hit\u548cvcl_deliver\u4e2d\uff0c\u5982\u4e0b\u7684\u53d8\u91cf\uff08\u5927\u90e8\u5206\u662fread-only\uff09\u53ef\u7528\uff1a<br \/>\n \u2022obj.proto\uff1a\u4e0e\u540e\u7aef\u4ea4\u4e92\u7684HTTP\u7248\u672c\u534f\u8bae\u3002<br \/>\n \u2022obj.status\uff1a\u540e\u7aef\u8fd4\u56de\u7684HTTP\u72b6\u6001\u7801\u3002<br \/>\n \u2022obj.response\uff1a\u540e\u7aef\u8fd4\u56de\u7684HTTP\u72b6\u6001\u5185\u5bb9\u3002<br \/>\n \u2022obj.cacheable\uff1a\u5982\u679c\u5bf9\u8c61\u7684beresp.cacheable\u4e3a\u201dtrue\u201d\uff0c\u90a3\u4e48\u6b64\u53d8\u91cf\u7684\u503c\u4e3a\u201dtrue\u201d\u3002\u9664\u975e\u4f60\u5f3a\u5236delivery\uff0c\u5426\u5219obj.cacheable\u4e00\u76f4\u4e3a\u201dtrue\u201d\u3002<br \/>\n \u2022obj.ttl\uff1a\u7f13\u5b58\u5bf9\u8c61\u7684\u751f\u5b58\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\uff0c\u8fd9\u4e2a\u53d8\u91cf\u662f\u53ef\u5199\u7684\u3002<br \/>\n \u2022obj.lastuse\uff1a\u4ece\u73b0\u5728\u5230\u5bf9\u8c61\u6700\u8fd1\u4e00\u6b21\u8bbf\u95ee\u6240\u95f4\u9694\u7684\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\u3002<br \/>\n \u2022obj.hits\uff1a\u5bf9\u8c61\u88ab\u53d1\u9001\u5230\u5ba2\u6237\u7aef\u7684\u6b21\u6570\uff0c0\u8868\u793a\u7f13\u5b58\u67e5\u8be2miss\u4e86\u3002<\/p>\n<p>\u5982\u4e0b\u53d8\u91cf\u5728\u51b3\u5b9a\u5bf9\u8c61hash key\u7684\u65f6\u5019\u53ef\u7528\uff1a<br \/>\n \u2022req.hash\uff1ahash key\u88ab\u7528\u6765\u5173\u8054\u4e00\u4e2a\u7f13\u5b58\u4e2d\u7684\u5bf9\u8c61\u3002\u5728\u8bfb\u5199\u7f13\u5b58\u7684\u65f6\u5019\u90fd\u4f1a\u88ab\u7528\u5230\u3002<\/p>\n<p>\u5982\u4e0b\u53d8\u91cf\u5728\u51c6\u5907\u628a\u4e00\u4e2a\u54cd\u5e94\u53d1\u9001\u7ed9\u5ba2\u6237\u7aef\u65f6\u5019\u53ef\u7528\uff1a<br \/>\n \u2022resp.proto\uff1a\u54cd\u5e94\u4f7f\u7528\u7684HTTP\u534f\u8bae\u7248\u672c\u3002<br \/>\n \u2022resp.status\uff1a\u5c06\u8981\u8fd4\u56de\u7684HTTP\u72b6\u6001\u7801\u3002<br \/>\n \u2022resp.response\uff1a\u5c06\u8981\u8fd4\u56de\u7684HTTP\u72b6\u6001\u5185\u5bb9\u3002<br \/>\n \u2022resp.http.header\uff1a\u76f8\u5173\u7684HTTP\u5934\u3002<\/span><br \/>\n<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p><span style=\"color:#ff0000;\"><strong><span style=\"font-size:small;\">vcl_init<\/span><\/strong><\/span> <\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">Called&nbsp;when&nbsp;VCL&nbsp;is&nbsp;loaded,&nbsp;before&nbsp;any&nbsp;requests&nbsp;pass&nbsp;through&nbsp;it.&nbsp;Typically&nbsp;used&nbsp;to&nbsp;initialize&nbsp;VMODs.<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">\u5f53VCL\u52a0\u8f7d\u65f6\u8c03\u7528\uff0c\u4e4b\u540e\u52a0\u8f7d\u5ba2\u6237\u8bf7\u6c42\u3002\u4e00\u822c\u7528\u4e8e\u521d\u59cb\u5316VMOD\u6a21\u5757\u3002<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">return()&nbsp;values:<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\">\u8fd4\u56de\u503c\u6709\uff1a<\/p>\n<p style=\"padding-bottom:0px;widows:2;text-transform:none;background-color:#ffffff;text-indent:0px;margin:0px;padding-left:0px;letter-spacing:normal;padding-right:0px;font:14px\/21px tahoma, helvetica, arial;white-space:normal;orphans:2;color:#454545;word-spacing:0px;padding-top:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;\"><strong>ok&nbsp;<\/strong>Normal&nbsp;return,&nbsp;VCL&nbsp;continues&nbsp;lo...<\/p>\n<p> <a href=\"https:\/\/www.xiaobo.li\/notes\/archives\/332\">\u7ee7\u7eed\u9605\u8bfb <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[284],"tags":[38],"class_list":["post-332","post","type-post","status-publish","format-standard","hentry","category-webserver","tag-varnish"],"_links":{"self":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts\/332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/comments?post=332"}],"version-history":[{"count":0,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts\/332\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/media?parent=332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/categories?post=332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/tags?post=332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}