gpt4 book ai didi

php - 访问 ESI 标记内的 php 变量

转载 作者:行者123 更新时间:2023-12-03 17:46:50 25 4
gpt4 key购买 nike

目前正在尝试将 Varnish 缓存系统的 ESI 包含功能与 php 项目一起使用。在我的场景中,我需要访问 esi 标记内的 php 变量。类似于以下...

 <p class="dt5">This article was read <esi:include src="http://localhost/live24/esi/viewCount" /> times. </p>

这是 esi 标签内的完整 url,它工作正常,即从服务器获取读取计数,页面的其余部分从缓存中提供。但是如何生成可以传递给 esi 标签的动态 url。

我尝试过类似以下的操作......
<?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 变量或任何其他方法来生成动态 url 以在 esi 包含中使用。

最佳答案

找到了一个解决方案,实际上它非常简单明了。早该想到的。

首先是代码片段..

<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 生成并将其绑定(bind)到 esi:include 标记内都是可能的。
<!-- ... -->当启用 ESI 处理时,此标签将被 varnish 静默删除,并且在禁用 ESI 处理的情况下,此标签将生效并使 esi:include 标签无效。

谁有其他想法,请分享....

关于php - 访问 ESI 标记内的 php 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35253406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com