gpt4 book ai didi

php - 如何将 Varnish ESI 与模块化 PHP 模板系统一起使用

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

我正在寻找将 Varnish 实现到数据重/以用户为中心的网站中。如何使用使用 php 包含 html 模板的系统设置 ESI?

我目前使用一个自定义 php 模板系统(类似于 MVC 设计模式),其工作方式如下:

发出页面请求 -> php 计算逻辑 -> php 包含 html 模板页面并填写变量 -> 页面输出

我只见过主要用于 html 页面的 esi 标签,包括 php 片段。

像下面的代码:

<HTML>
<BODY>
The time is: <esi:include src="/php-includes/date.php"/>
at this very moment.
</BODY>
</HTML>

但是可以反过来做吗?例如php页面中的esi标签包含html片段?

与此类似:
<?php
//logic here
$content = "this will be displayed on the content page"

include("templates/header.html.php"); //esi would go here since page is static content
include("templates/content.html.php"); //no esi here, since page is dynamic content
include("templates/footer.html.php"); //esi would go here since page is static content
?>

最佳答案

您只需为您的特定 MVC 实现创建一种“ESI”渲染器,如 /esi.php?template=foo ,然后在内部类似:

... whatever you need to boostrap your app in order to render a template ....
include("templates/$template.html.php");
.... exit so no header/fooder stuff is rendered, only template HTML of interest

当然不是那么简单,但简而言之就是类似的事情。

然后我会在每个模板文件顶部放置一些逻辑以发出 HTML(如果由 esi.php 呈现,或者如果 ESI“功能”处于禁用状态)或 <esi仅标记。

例如 templates/header.html.php可能有(伪代码):
if esi (detect by checking request_uri to be esi.php) then echo '<esi /esi.php?template=header?somevar-from-parent=...'; return
---existing code--

关于php - 如何将 Varnish ESI 与模块化 PHP 模板系统一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57902569/

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