目前正在尝试将清漆缓存系统的ESI包含功能与PHP项目一起使用。 在我的场景中,我需要访问 esi 标签内的 php 变量。 像下面这样...
<p class="dt5">This article was read <esi:include src="http://localhost/live24/esi/viewCount" /> times. </p>
这是 esi 标签内的完整 URL,它工作正常,即从服务器获取读取计数,页面的其余部分从缓存中提供。 但是我怎样才能生成一个动态 URL,我可以传递给 ESI 标签。
我已经尝试过类似以下内容....
<?php $url = site_url() . "/esi/viewCount" ?>
或
<?php $url = "http://localhost/live24/esi/viewCount" ?>
<p class="dt5">This article was read <esi:include src="$(url)" /> times. </p>
因为$(variable_name)
或$(variable_name{key_name})
是在 ESI 标签中添加变量的语法,但在访问 PHP 变量时似乎不起作用。
我也尝试过这样的事情...
<p class="dt5">This article was read<esi:include src="http://$(SERVER{NAME})/live24/esi/viewCount" /> times. </p>
这行得通。 表示我可以从 esi 标签内部访问超全局变量。
有没有办法访问 ESI 标签中的 PHP 变量或任何其他方法来生成要在 ESI 包含中使用的动态 URL。
找到了一个解决方案,实际上非常简单明了。 应该早点考虑一下。
首先是代码片段..
<p class="dt5">This article was read
<esi:remove>
<?php $esiUrl = "http://localhost/bdlive24/esi/viewCount"; ?>
</esi:remove>
<!--esi
<esi:include src=<?php echo $esiUrl; ?> />
-->
times</p>
这里的诀窍是引入<esi:remove>
标签。 删除标签中的任何标记代码都将被忽略,PHP代码将被执行。因此,现在可以在 esi:remove 标签内生成任何动态 url 并将其绑定到 esi:include 标签中。
<!-- ... -->
启用 ESI 处理时,此标记将被清漆静默删除,如果禁用 ESI 处理,则此标记将起作用并使 esi:include 标记处于非活动状态。
任何有任何其他想法的人,请分享....