问题标签 [edge-side-includes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2728 浏览

caching - 反向代理HTTP请求的后处理?(如 Akamai 的 ESI)

我们经营着一个内容量相对较大的网站。像大多数内容网站一样,每个页面的大部分内容都是相对静态的。这些文章很少改变,使它们成为某种形式的静态/边缘缓存的良好候选者。但是,有两个大问题。二级页面元素(导航、最近的内容列表等)变化非常频繁,很快就会使“完整”缓存页面失效。我们在页面中包含更多动态位(例如用户特定信息等)也很常见。

拥有一个反向代理/负载均衡器来对内容进行后处理并让我们在代理/边缘处理包含内容会非常好。对后端的初始请求将返回一个粗略的模板,然后代理软件可以处理该模板以完成它。标记可能看起来像这样:

您将在该示例中看到一小部分 Ruby,它根据 cookie 值确定包含的文件,然后返回带有要拉入的 URL、超时和一些默认文本的哈希值,以在出现异常时显示错误。理论上,所有包含也可以异步请求。

我的理解是亚马逊会做这样的事情。各种页面组件由后端服务生成,具有严格的超时限制以确保整体页面速度。我希望他们的 CDN 服务会包含这样的内容,但事实并非如此!

Edge Side Includes (ESI) 的 W3 规范几乎是我想要的。然而,对它的支持很少。它可以通过 Akamai 获得,有一些 Oracle 软件可以做到这一点,开源 Varnish 缓存有一个非常基本的实现。它也是一种非常丑陋的 XML 格式。

所以问题是:有什么可以让我做我想做的事?还有其他人以这种方式做事吗?

0 投票
1 回答
1600 浏览

ruby-on-rails - 通过 ESI:include 设置 Cookie,如何设置?

我试图使用 esi 在我的网站上进行 ninja 缓存。这个想法是,该网站大部分是静态的,如果用户登录与否,我只需要做一些花哨的事情。所以我试图在页面 A 上放置一个,并在页面 B 的应用程序中设置触发器。

这样我可以将页面 A 缓存在 varnish 上,让服务器处理页面 B 的小工作。

但是我在页面 B 上设置的 cookie 没有转发到页面 A 的标题并且没有工作 =/

这是我试图做的可能吗?

我可以使用 ajax,但是在将页面发送给用户之前在服务器内部执行此操作对我来说似乎更正确。

ps:我无法创建esi标签=/

0 投票
2 回答
2510 浏览

varnish - 清漆 ESI 认可但不包括在内

大家好。我在 Varnish 上使用 Edge Side Includes 来缓存静态 HTML shell,然后包含一些动态 HTML 和 JSON 对象。

HTML 的 ESI 已正确包含,但 JSON 对象的 ESI 未包含;调试语句确定 Varnish 可以看到它,但它莫名其妙地决定不包含 JSON ESI。

这是加载结构:

p>

同样,esi 1esi 3工作得很好,但esi 2没有被包括在内。esi 2的内容是这样的:

我读到看起来不像 XML 的 ESI 代码会导致错误,所以我设置了运行时参数esi_syntax=0x7。没有骰子,但至少我现在得到了一些调试数据。

对esi 2的中断调用如下所示:

esi 3的(工作)调用如下所示:

正如我所提到的,Varnish 似乎认识到我正在尝试包含 ESI,但这是我从 varnishlog 获得的唯一相关的调试消息:

客户端看到的输出包含所有正常内容,但 <esi> 标记保持不变。它看起来就像您在上面的调试消息中看到的一样。

有谁知道为什么 esi 2 没有被解析/包含?任何帮助将不胜感激!

0 投票
1 回答
542 浏览

heroku - Heroku 是否支持 Varnish Edge Side Includes (ESI)?

任何人都知道 Heroku 的 Varnish 实现是否支持 Edge Side Includes?


更新:我最终提出了一个支持请求,向 Heroku 询问他们的 Varnish 实现。这是我的要求:

嗨,我只是想知道您的清漆实现是否支持 Edge Side Includes?是否有关于您的 varnish 实现中支持和不支持的任何信息?(例如,我在其他地方读到您不能 PURGE 条目?)

...以及他们的回应:

我们不支持 ESI。但是,我们会在每次部署时清除清漆缓存。这将确保作为代码一部分的静态资产将在任何部署时被清除,以便缓存将拾取任何新的或更改的资产。

希望这可以帮助。

-克里斯

当然,通过 PURGE,我的意思是手动清除路由,这是不支持的。

0 投票
1 回答
751 浏览

http - 边缘服务器包括 (ESI)

使用 ESI 是一种好习惯还是一种较旧的技术?有没有更好的选择。我熟悉 CDN 和缓存服务器的使用,但这个 ESI 通常用于不仅仅是加载前端的应用程序。

0 投票
1 回答
3979 浏览

php - 如何在 ESI:include 脚本中设置 cookie?

我有一个通过 Varnish 加载的基本 PHP 页面,其中包含一个 ESI 包含回调到服务器以设置 cookie。cookie 是通过域访问等设置的,但是当通过 ESI 调用时,cookie 永远不会设置。如果您直接访问 ESI 包含路径,则 cookie 设置没有问题。我什至将我的 Varnish 配置设置为从不缓存任何内容,认为 VCL 可能会杀死 cookie。

这个...

...包括这个...

我是 Varnish 和 ESI 的新手,所以我开始怀疑这是否是一个已知的限制(无论是 ESI 还是 Varnish 的 ESI 实现),但我在网上找不到任何关于我的问题的讨论。

0 投票
4 回答
5131 浏览

php - Varnish Cache 不会做 ESI 包含

我在让最简单的 Varnish Cache ESI 测试工作时遇到问题。
在尝试和尝试之后,我想我在这里问。

基本上它只是不会包含 ESI 文件。它只是返回 HTML 而没有包含它。

这是我的清漆启动命令:

这是我正在测试的 URL:

我的 vcl 规则:

1) 默认.vcl

我的示例测试 esi 代码

2) 测试.php

esi 的 php 包括

3) esi_1.php

我已经尝试了上述 vcl 规则的许多变体。
都行不通。只是看不出我哪里出错了?

非常感谢任何建议/帮助。

谢谢你。

0 投票
3 回答
3753 浏览

caching - Varnish和ESI,性能如何?

我想知道现在 ESI 模块的性能如何?我在网上读过一些帖子,说清漆上的 ESI 性能实际上比真实的要慢。

假设我有一个包含超过 3500 个 esi 的页面,这将如何执行?esi 是为这种用途设计的吗?

0 投票
1 回答
650 浏览

varnish - 清漆 ESI 多个片段,单个请求?

我的任务是为相当大的 wordpress 多站点部署改进页面服务时间。

我正在考虑使用清漆对内容进行整页缓存,并使用它的 ESI 功能来包含与用户登录状态相关的动态内容,还通过使用与自定义标头匹配的清漆清除列表来处理应用程序中的缓存失效博客的 ID 或其他一些包含文章 ID 和/或用户 ID 的自定义标题。

我想知道是否有人想过通过 ESI 包含多个页面片段,同时将它们分组到来自后端的单个响应中(例如,我们必须在菜单中显示用户名并在侧边栏中显示自定义用户小部件,页面的其余部分是静态的并由 varnish 缓存。ESI 要求我向后端发出两个请求,以便检索这两个片段并将它们放在适当的位置,而在后端我可以轻松地为两者生成 HTML 代码一次运行并将其返回清漆进行处理)

0 投票
1 回答
738 浏览

http - Edge-Side-Includes:esi:inline 标签如何工作

我一直在查看 ESI(Edge-Side-Includes)规范,但我不太清楚 esi:inline 元素是如何工作的。谁能解释一下?