问题标签 [esi]

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 投票
0 回答
117 浏览

symfony - symfony2 不使用带有 AppCache 和 render_esi 的 http 304

我们有一个 symfony 2.3.35 应用程序,我们在其中使用 setLastModified 标头来启用客户端缓存。为了提高性能,我们启用了 AppCache 作为反向代理,但还必须通过 twig 将 render_esi 用于客户端特定的控制器:

之后,所有页面都使用 http 状态 200 而不是像 render_esi 之前那样的 304。禁用 render_esi 时,304 会返回。

我的问题:这是故意的吗?AppCache 内核是否需要请求来填充 esi 控制器的片段请求?那么这不是性能差距(更多地使用CPU等)吗?

使用 hinclude 似乎可以解决问题,但对我来说它看起来有点过时了......

我做错了吗?

提前致谢!

0 投票
1 回答
623 浏览

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

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

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

我尝试过类似以下的操作......

或者

因为$(variable_name)or$(variable_name{key_name})是在 esi 标记内添加变量的语法,但在访问 PHP 变量时似乎它不起作用。

我也尝试过这样的事情......

这有效。表明我可以从 esi 标签内访问超全局变量。

是否有任何方法可以访问 esi 标记内的 php 变量或任何其他方法来生成要在 esi 包含中使用的动态 url。

0 投票
0 回答
305 浏览

symfony - Symfony 片段有时会返回 403 到 Varnish

一个 Symfony 2.3 应用程序在一个带有 nginx 端口 80 的 Web 服务器上。Varnish4 在一个端口 80 上的前端服务器上运行,Nginx 在端口 443 上作为 SSL 终结器。这也使用 Varnish3 进行了测试,结果相同。大多数情况下,这非常有效!

几分钟后,一些 ESI 使用完整的 Symfony 模板返回 403 Forbidden 错误。我相信当缓存的片段过期时会发生这种情况。

我可以通过以下方式强制解决问题:

  1. 重启 Varnish 清除缓存
  2. 通过 HTTP 加载页面(一切正常)
  3. 通过 HTTPS 加载页面(一切正常)
  4. 等待某些 ESI 从缓存中过期
  5. 通过 HTTPS 加载页面(此处发生错误)
  6. 通过 HTTP 加载页面(一切正常)

我也可以通过在 HTTPS 上执行第 2 步和在 HTTP 上执行第 5 步来强制解决问题。

因此,我认为这个问题与 ESI 协议与原始页面的协议不匹配有关。有没有人遇到过这个问题,或者可以帮助诊断/修复?

受信任的代理是 403 禁止错误的第一大罪魁祸首,但我已将127.0.0.1前端服务器的 IP 地址添加到我的受信任代理列表中app/config/config.yml。如果我删除受信任的代理列表,我可以确认事情会变得更糟。

0 投票
2 回答
626 浏览

php - Symfony 2 ESI 缓存

我有一个在我的所有页面中调用的操作(仅适用于登录的人),此操作从我的 Twitter 帐户中检索最近的推文。

API 访问受到限制,因此我希望此操作的结果在缓存中保存 10 分钟

}

为了启用缓存我做了以下更改

尽管页面在每次页面刷新时都会更新(经过测试,它在生产环境中所做的事情与 app.php 上的更改完全相同)

我是否误解或忘记了一件事?

预先感谢您的帮助。

编辑解决:我正在渲染这个动作

改变它

解决我的问题

和讯

0 投票
0 回答
154 浏览

magento - 如何使用 ESI 策略通过 Varnish 缓存 Magento 中的登录用户?

我有一个 Magento 站点并使用 Varnish 缓存进行优化。

我安装并配置了 PageCache 模块(与 Magento 一起使用的 Varnish 的 FPC 扩展),但是当用户登录时,该站点无法被缓存。

解决方案是为模块实施一些 ESI 策略,使其与登录用户一起工作。我怎样才能做到这一点?我需要尽快解决这个问题。太感谢了!

0 投票
0 回答
290 浏览

symfony - 安全上下文不包含身份验证令牌 ESI 和 Symfony2

我正在使用 ESI(Edge Side Includes)来加速我的页面,但每次我想检查用户是否登录时,我都会收到此错误:

AuthenticationCredentialsNotFoundException:安全上下文不包含身份验证令牌。一个可能的原因可能是没有为此 URL 配置防火墙。

在我的 config.yml 文件中,我有这个:

有人知道如何解决吗?我已经尝试为/_proxy url 设置防火墙,但我认为这不是解决方案。

这些是我的防火墙:

谢谢

0 投票
3 回答
419 浏览

symfony - 特定路由上的 ESI 缓存

我怎样才能让清漆以不同的状态缓存动态菜单?

我当前的项目(基于 Symfony 2.8)使用KnpMenuBundle和 varnish 来缓存页面。它还ESI用于禁用缓存某些页面上的特定元素。其中包括菜单。但是由于这不是一个变化很大的元素,我想知道是否可以缓存菜单的不同状态并将相关的状态传递给当前调用菜单的页面。

涉及的主要文件如下:

main.html.twig

AppBundle\Controller\MenuController.php

菜单/main_menu_esi.html.twig

0 投票
1 回答
256 浏览

frontend - 微服务中的多语言前端

我是微服务的新手。在我的项目中,我们试图将单体应用程序分解为更小的微服务。使用多语言技术实现后端系统相当容易。前端也可以实现吗?BFF(前端后端)似乎是在微服务中实现前端的流行模式。但是,这不会导致前端单体应用吗?也许我对 BFF 的理解是部分/不正确的。很少有选项,例如 SSI(服务器端包括)和 ESI(边缘端包括)可以帮助在前端实现多语言。但是portlet 技术不是在2000 年代初试图实现类似的东西吗?ESI 在thinkworks 技术雷达上处于试验阶段(链接)。你认为这是正确的方向。任何建议将被认真考虑。

0 投票
1 回答
318 浏览

akamai - ESI 包括在 akamai 设置中

我有一个静态 HTML 站点,存储在 Akamai 的 NetStorage 中。我一直在研究 ESI,以便我可以在其他页面中包含内容,例如在所有页面上包含 navigation.html。

Akamai 围绕标签的结构制作了一些很好的文档,例如

但是,有什么我想念的吗?当我将标签添加到页面并将标签上传到 NetStorage 帐户时,服务器没有处理这个。是否需要在我缺少的 Akamai Luna 控制中心的 Property Manager 中进行设置?

0 投票
0 回答
47 浏览

symfony - symfony3 ESI privateCache 转换为 publicCache

我正在使用 symfony 反向代理进行缓存。

我有 2 个私人缓存。你可以把它想象成一个私人网上商店:物品列表是我的第一个私人缓存,因为需要对用户进行身份验证。该组件是我的第二个私有缓存,因为它包含动态数据,仅供登录用户使用。

应用内核

配置.yml

page.html.twig

PageController - IndexAction:

MenuController - DisplayMenuAction:

在 prod 环境中,它显示在缓存头中

缓存控制:max-age=0, public, s-maxage=15

我有 2 个私有缓存,为什么缓存标头作为公共发送?

编辑:

当我评论 esi_render 标记时,该页面的缓存私有时间为 3 分钟。(如预期)

我检查了我没有其他使用该命令的侦听器bin/console debug:container --tag=kernel.event_subscriber