您好我有以下问题。我有一个运行laravel 5.1的网站,为许多用户提供网站,并且我使用Varnish4的加载时间更快。我的varnish vlc文件如下。
backend default {
.host = "127.0.0.1";
.port = "80";
}
sub vcl_recv {
# Happens before we check if we have this in cache already.
#
# Typically you clean up the request here, removing cookies you don't need,
# rewriting the request, etc.
unset req.http.Cookie;
}
sub vcl_backend_response {
unset beresp.http.Set-Cookie;
set beresp.do_esi = true;
set beresp.ttl = 1m;
return(deliver);
}
正如您所看到的,我为所有请求启用了esi processign(不是最佳做法,但我正在努力使其工作),并删除vcl_recv子例程中的所有cookie。
现在,我有一个带有esi:include块的刀片模板,如下所示:
<esi:remove>
NO ESI SUPPORT
<script>window.load_hot = true;</script>
</esi:remove>
<!--esi
<p>The full text of the license:
<esi:include src="http://localhost/date.php" />
</p>
-->
esi include标记上的路由正常工作并返回预期输出。 Varnish系统按预期解析ESI块,因为不显示回退(显示NO ESI SUPPORT)消息。
那么,这段代码会变坏什么呢?
答案 0 :(得分:0)
esi:include标记仅采用路径,而不是带有协议和主机名等的完整URL,例如
<esi:include src="/cgi-bin/date.cgi"/>
请参阅:https://www.varnish-cache.org/docs/4.1/users-guide/esi.html
答案 1 :(得分:0)
解决。
出于某种原因:
<esi:remove>
NO ESI SUPPORT
<script>window.load_hot = true;</script>
</esi:remove>
<!--esi
<p>The full text of the license:
<esi:include src="http://localhost/date.php" />
</p>
-->
由于标签,无效。
删除标签后如下:
<esi:remove>
NO ESI SUPPORT
<script>window.load_hot = true;</script>
</esi:remove>
<p>The full text of the license:
<esi:include src="http://localhost/date.php" />
</p>
esi包含开始按预期工作。