如何使用清漆加快我的网站吗

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.1,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

如何使用清漆加快我的网站吗

因为Symfon欧宝娱乐app下载地址y的缓存使用标准HTTP缓存头HTTP缓存可以换成其他任何反向代理。清漆是一个强大的、开源的、HTTP加速器能够快速服务缓存的内容,包括支持吗边边包括

Symfo欧宝娱乐app下载地址ny信任反向代理

清漆自动将IP转发X-Forwarded-For和叶的X-Forwarded-Proto头在请求。如果不配置清漆作为受信任代理,Symfony会看到所有请求从清漆通过不安全的HTTP连接主机,而不是欧宝娱乐app下载地址真正的客户。

记得叫要求::setTrustedProxies ()前端控制器方法,清漆和被视为一个可信的代理X-Forwarded - *使用标题。

路由和X-FORWARDED头

确保Symfony路由器生成url正确欧宝娱乐app下载地址清漆,X-Forwarded-Port头必须出席Symfony使用正确的端口号。欧宝娱乐app下载地址

此端口号对应端口设置是使用接收外部连接(80年HTTP连接的默认值)。如果应用程序还接受HTTPS连接,可能有另一个代理(如清漆本身不做HTTPS)在默认的HTTPS端口443处理SSL终止和将请求转发HTTP请求与一个清漆X-Forwarded-Proto头。在这种情况下,您需要添加以下配置代码片段:

1 2 3 4 5 6 7
将调用vcl_recv{子如果(req.http。X-Forwarded-Proto = =“https”){req.http。X-Forwarded-Port =“443”;}其他的{req.http。X-Forwarded-Port =“80”;}}

饼干和缓存

默认情况下,大多数缓存代理不缓存发送请求时饼干或基本身份验证头。这是因为页面的内容应该取决于cookie的值或认证头。

如果你确定后端从未使用会话或基本身份验证,有清漆删除相应的头球,防止客户绕过缓存的请求。在实践中,您将需要会话至少在网站的某些部分,例如当使用形式CSRF保护。在这种情况下,一定要只有当实际需要开始一个会话和明确的会话时不再需要。或者,你可以看看缓存的页面包含CSRF保护形式

饼干中创建JavaScript和只在前端使用,如使用谷歌分析时,仍然发送到服务器。这些饼干不相关的后端,不应该影响缓存的决定。配置您的清漆缓存清洁饼干头。你想保持会话cookie,如果有一个,摆脱其他cookie,这样页面缓存,如果没有活跃的会话。除非你改变了PHP的默认配置,您的会话cookie的名称PHPSESSID:

  • 清漆4
  • 清漆3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
将调用vcl_recv{子/ /删除所有饼干除了会话ID。如果(req.http.Cookie) {req.http。饼干=”;"+ req.http.Cookie;req.http。饼干=regsuball(req.http.Cookie,”;+”,”;");req.http。饼干=regsuball(req.http.Cookie,”;(PHPSESSID) = ",”;1 = " \);req.http。饼干=regsuball(req.http.Cookie,”;[^][^;]*”,”“);req.http。饼干=regsuball(req.http.Cookie,“^;)+ | (;+ $”,”“);如果(req.http。饼干= =”“){/ /如果没有更多的饼干,删除标题页面缓存。设置req.http.Cookie;}}}

提示

如果对于每一个用户,内容不是不同的,但取决于用户的角色,是每个组单独的缓存解决方案。这种模式实现和解释FOSHttpCacheBundle的名字用户上下文

确保缓存行为的一致性

清漆使用缓存头由发送应用程序来确定如何缓存内容。然而,清漆4之前版本没有尊重cache - control: no - cache,不是商店私人。为了确保一致的行为,使用下面的配置,如果你仍然在使用清漆3:

  • 清漆3
1 2 3 4 5 6 7 8 9 10
子vcl_fetch {/ /默认情况下,Varnish3忽略cache - control: no - cache和私人/ / https://www.varnish-cache.org/docs/3.0/tutorial/increasing_your_hitrate.html cache - control如果(beresp.http。缓存-Control ~“私人”| | beresp.http。cache - control ~“no - cache”| | beresp.http。cache - control ~“不是商店”){返回(hit_for_pass);}}

提示

你可以看到清漆的默认行为的形式VCL文件:default.vcl清漆3,builtin.vcl清漆4。

使边缘方面包括(ESI)

的解释边边包括文章,S欧宝娱乐app下载地址ymfony检测是否会谈到反向代理,了解应急服务国际公司。当你使用Symfony的反向代理,欧宝娱乐app下载地址你不需要做任何事。而是让清漆Symfony解决应急服务国际公司的标记,你需要一些欧宝娱乐app下载地址配置的清漆。欧宝娱乐app下载地址Symfony使用Surrogate-Capability头的边缘结构由Akamai描述。

请注意

清漆只支持src应急服务国际公司标签属性(onerroralt属性被忽略)。

首先,配置清漆,以便它的ESI支持通过添加一个广告Surrogate-Capability头请求转发到后端应用程序:

1 2 3 4
将调用vcl_recv{子/ /添加一个Surrogate-Capability头宣布应急服务国际公司的支持。req.http。Surrogate-Capability =“abc = ESI / 1.0”;}

请注意

美国广播公司头的一部分并不重要,除非你有多个“代理人”,需要宣传他们的能力。看到Surrogate-Capability头获取详细信息。

然后,优化清漆,这样它只解析响应内容当至少有一个应急服务国际公司标签通过检查Surrogate-Control头,Symfony自动补欧宝娱乐app下载地址充道:

  • 清漆4
  • 清漆3
1 2 3 4 5 6 7
子vcl_backend_response {/ /检查应急服务国际公司确认和删除Surrogate-Control头如果(beresp.http。Surrogate-Control ~“ESI / 1.0”){复原beresp.http.Surrogate-Control;beresp。do_esi =真正的;}}

提示

如果你遵循建议确保一致的缓存行为,VCL函数已经存在。附加的代码的功能,他们不会相互干扰。

缓存失效

如果你仍然想要缓存经常变化的内容和服务用户的最新版本,你需要使内容无效。而缓存失效允许你从代理之前清除内容已经过期,它增加了缓存设置的复杂性。

提示

开源FOSHttpCacheBundle需要缓存失效的疼痛,帮助你组织你的缓存和无效的设置。

的文档欧宝体育电话FOSHttpCacheBundle解释如何配置清漆和其他反向代理缓存失效。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。