如何使用清漆来加快我的网站
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.4,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何使用清漆来加快我的网站
因为Symfonob娱乐下载y的缓存使用标准的HTTP缓存头,所以HTTP缓存可以很容易地替换为任何其他反向代理。清漆是一个强大的,开源的,HTTP加速器能够快速服务缓存内容,包括支持边边包含。
信任反向代理
为了ESI能正常工作,为了X-FORWARDED头要使用,你需要配置清漆作为一个信任的代理。
配置
如前所述,Symfony足够智能,可以检ob娱乐下载测它是否与理解ESI的反向代理通信。当您使用Symfony反向代理时,它可以开箱即用,但是您需要一个特殊的配置才能使它ob娱乐下载与Varnish一起工作。幸运的是,Symfonyob娱乐下载依赖于Akamai编写的另一个标准(边缘结构),所以即使你不使用Symfony,本章中的配置技巧也很有用。ob娱乐下载
请注意
清漆只支持src
ESI标签属性(onerror
而且alt
属性被忽略)。
首先,配置Varnish,使其通过添加Surrogate-Capability
转发到后端应用程序的请求头:
1 2 3 4
sub vcl_recv{//添加一个代理能力头,宣布支持ESI。设置req.http。代理能力= "abc=ESI/1.0";}
请注意
的美国广播公司
除非您有多个“代理”需要宣传其功能,否则部分标题并不重要。看到Surrogate-Capability头获取详细信息。
然后,优化Varnish,使其仅在至少有一个ESI标记时解析响应内容Surrogate-Control
Symfony自动添加的ob娱乐下载头文件:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22
subvcl_fetch{/*检查ESI确认并删除代理控制头*/ if (beresp.http. subvcl_fetch{/*删除代理控制头代理控制~ "ESI/1.0") {unset berep .http.代理控制;//对于Varnish >= 3.0 set beresp。Do_esi = true;// For Varnish
谨慎
在3.0版本之前,Varnish不支持使用ESI进行压缩GZIP和清漆).如果你没有使用Varnish 3.0,在Varnish前放置一个web服务器来执行压缩。
缓存失效
如果希望缓存频繁更改的内容,并且仍然向用户提供最新版本,则需要使该内容无效。而缓存失效允许您在代理过期之前清除内容,这增加了缓存设置的复杂性。
提示
开源FOSHttpCacheBundle通过帮助您组织缓存和无效设置,消除缓存无效的痛苦。
Varnish可以配置为接受一个特殊的HTTP清洗
方法,该方法将使给定资源的缓存失效:
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
/*连接到本地机器上的后端服务器端口8080 */后端默认{.host = "127.0.0.1";.port = "8080";} sub vcl_recv {/* Varnish默认行为不支持PURGE。匹配PURGE请求并立即执行缓存查找,否则Varnish将直接将请求输送到后端,并绕过缓存*/ if (req。request == "PURGE"){返回(查找);}} sub vcl_hit{//匹配清除请求if (req.)request == "PURGE"){//强制对象过期Varnish = 3.0 // PURGE;错误200“已清除”;}} sub vcl_miss{/*匹配PURGE请求,并指出该请求没有存储在缓存中。*/ if (req;请求== "清除"){错误404 "未清除"; } }
谨慎
你必须保护清洗
HTTP方法以某种方式避免随机的人清除您的缓存数据。你可以通过设置一个访问列表来做到这一点:
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
/*连接到本地机器上的后端服务器端口8080 */后端默认{.host = "127.0.0.1";.port = "8080";} // ACL可以包含IP、子网和主机名。“192.168.55.0”/ 24;} sub vcl_recv{//匹配清除请求以避免缓存绕过request == "PURGE"){//将客户端IP匹配到ACL if (!ip ~ purge){//拒绝访问错误405 "不允许";} //执行缓存查找返回(lookup);}} sub vcl_hit{//匹配清除请求if (req.)request == "PURGE"){//强制对象过期Varnish = 3.0 // PURGE;错误200“已清除”;}} sub vcl_miss{//匹配清除请求request == "PURGE") { // Indicate that the object isn't stored in cache error 404 "Not purged"; } }
路由和X-FORWARDED报头
确保Symfony路由器使用Varniob娱乐下载sh正确地生成url“X-Forwarded”
必须添加头文件,以便Symfony知道请求的原始端口号。ob娱乐下载具体如何做到这一点取决于您的设置。举个简单的例子,Varnish和你的web服务器在同一台机器上,Varnish监听一个端口(例如80),Apache监听另一个端口(例如8080)。在这种情况下,清漆应该添加X-Forwarded-Port
头,这样Symfony应用程序就知道原ob娱乐下载来的端口号是80而不是8080。
如果这个头没有正确设置,Symfony可能会追加ob娱乐下载8080
当生成绝对url时:
1 2 3 4 5 6 7
Sub vcl_recv {if (req.http。X-Forwarded -Proto == "https" ) { set req.http.X-Forwarded-Port = "443"; } else { set req.http.X-Forwarded-Port = "80"; } }
请注意
记住配置framework.trusted_proxies在Symfonob娱乐下载y配置中,以便Varnish被视为受信任的代理X-Forwarded -
使用头文件。