问题标签 [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.
caching - Symfony2:私有 ESI 片段
我想知道是否存在诸如私有 ESI 片段之类的东西。在我阅读的文档中:
- “设置共享的最大年龄 -这也将响应标记为公开”
- “一旦开始使用 ESI,请记住始终使用 s-maxage指令而不是 max-age。由于浏览器只接收聚合资源,它不知道子组件,因此它将遵守 max-年龄指令并缓存整个页面。而你不希望这样。”
我不完全了解我是否能够按用户缓存页面的某些部分。有人可以解释一下吗?
提前致谢!
varnish - 如何在清漆中禁用/设置传输编码?
Varnish 以 Transfer-Encoding: chunked for ESIed pages 响应,但这不适用于某些代理(squid)。我想禁用 ESI 的传输编码。
caching - 为包含 ESI 的请求维护会话
我在设置 Varnish 以正确处理包含 ESI 的子请求的会话 cookie 时遇到问题。
背景,SSCCE
三个文件:index.php
,navigation.php
并footer.php
使用 ESI 组合在一起,其中前两个文件是有状态的,但只是index.php
可缓存的,而footer.php
完全是无状态的。
清漆 VCL 配置:
期望的结果
我希望看到index.php
/footer.php
从缓存中加载,每 10/20 秒清除一次,同时navigation.php
直接从后端服务器加载。当然,必须设置第一个index.php
不能作为标头缓存的请求,但是可以从一开始就从缓存中加载。Set-Cookie
footer.php
我怎么能做到这一点?我知道Cookie
HTTP 请求中存在标头会导致缓存未命中,但我不能简单地删除它。
esi - 搜索引擎上的 ESI(边缘包含)和 hinclude 内容?
首先,如果这个问题确实属于,我很抱歉,如果是,请让我知道如果可能的话我应该在哪里发布。
我最近发现了 ESI 和 Hinclude 作为提高我的侧性能的方法,但是我上下搜索并找不到任何关于搜索引擎如何使用这些索引页面的文档。我认为由于 hinclude 使用 javascript,因此搜索引擎无法索引它们动态包含的内容。我不太确定 ESI,内容会被编入索引还是会被排除在外?我希望有人可以在这个话题上对我有所启发。
问候
plone - 用 esi 克隆重氮
是否可以避免在使用重氮渲染页面时将 doctype、<html>、<head>、<body> 添加到页面中?
我的问题是,当 varnish 从 <esi:include src="/mypage"> 标记加载内容时,diazo 会将 <!DOCTYPE、html 头和正文标记添加到加载的页面。我只想拥有“/mypage”给出的html。
谢谢!
akamai - 在本地主机上工作时模拟 ESI
我已经开始在 Akamai 中使用 ESI。当我有一个在实际通过 Akamai 运行的 int/test/stage/production 环境中运行的站点时,它们工作得非常好。
但是,当我们在 PC 上本地工作时,我们倾向于只使用一个简单的码头服务器,并且该站点不使用 Akamai 提供服务。这使得在不将我们的解决方案部署到 Akamai 的情况下查看工作是否正确有点具有挑战性。
有没有办法在不使用 Akamai 的情况下在本地模拟 ESI 以进行开发?
varnish - 如何在清漆中缓存动态内容?
我正在开发一个 RoR 应用程序。我想为售罄的物品设置一个 ttl。sold_out_status 函数返回售罄产品的productIds,定义为:
有没有办法可以将产品缓存在清漆中并为售罄的产品设置一个 ttl。一些研究表明,ESI 可能是一个好主意。但是,我找不到可以遵循的详细文档来实现这一点。另外,我怎样才能访问 varnish 中的 sold_out_status 的输出?
编辑:页面上的售罄产品可以通过请求 URL 找到,与此 URL 对应的页面包含呈现为文本的售罄产品的 ID。
forms - Symfony2 esi 缓存表单不工作
我遇到了奇怪的情况。我有带有本地文件的最新服务器文件。当这无效时,会出现此“有错误的闪烁消息”:
if ($form->isValid() && $this->checkLastComment($commentRepository,$user,$status, $comment)) {
我有两个网址。首先/Home(工作)为我加载带有评论的状态但我不缓存页面的每个人然后我有/建议的网址,我在其中加载带有评论的状态但使用
我缓存页面,因为它对所有用户都是一样的。
但它很奇怪,因为在本地机器上(缓存在我测试过)当我想创建评论时一切都运行正常......在产品,开发环境中。
在服务器上,当我在开发环境下运行正常。(缓存关闭)但是当我尝试在产品环境上发表评论时。我收到上述情况的错误消息...
怎么回事?请问哪里可能漏?我不知道。
公共 esi 缓存以某种方式破坏了我的表单?或者...?
一个朋友可以在那里发表评论......另一个不是......很奇怪......我以前没有,但在缓存清除后我再次能够......
编辑:
午饭后我又试了一次,我无法发表评论...... wtf ..
这是我在 chrome 中看到的标题:(发送)
使用这个 jquery 代码:
对此控制器:
和 checkLastComment 函数
*但是错误不应该出现在代码中,因为我在整个网络上都使用这种技术并且一切都运行良好......仅在这个特别的页面上它不工作......页面之间的唯一区别是这个被缓存了... + 当我创建新评论时,它没有任何缓存,不是吗?它只从缓存页面上的表单中获取数据... *
php - Varnish ESI 和 Wordpress - 模拟加载帖子
更新:我自己回答了这个问题。见下文。
我想我要的是一个set_the_id()
功能的等价物,如果存在的话。
我正在使用带有 Varnish 的 Wordpress 来提高性能,并且我想为侧边栏使用 ESI(Edge Side Include),因此可以比帖子内容本身更频繁地刷新诸如最近/热门帖子之类的内容。
这样做的一种方法是在你的插件目录等中创建一个端点,以便 Varnish 从 ESI 评论中访问,代码如下:
到目前为止一切都很好;这足以加载 Wordpress 并找到所有相关插件。然而,它们会在不同的点(特别是wp-includes/post-template.php
第 29 行)产生错误,因为它们需要使用诸如get_the_id()、in_category()和 post 对象的属性来突出显示某些帖子等,并且尚未加载任何帖子。
如何告诉 Wordpress 在上面的代码中加载特定的帖子 ID,就好像我去了一个类似的 URL http://example.com?p=1
,但没有输出完整的页面?我只想将环境设置为好像帖子处于活动状态,然后我可以在我的 ESI 调用中将当前帖子 ID 作为参数传递。
我认为query_posts()可能会有所帮助,我尝试添加:
但它什么也没做。
我也想知道WP_Post::get_instance()
(它似乎只接受一个对象,而不是一个帖子 ID)。
还有什么我可以使用的吗?
apache - 即使 Varnish 被禁用,有没有办法用 Apache 解决 ESI?有 Apache 模块吗?
我们正在将一个大型网站迁移到 Varnish(将 Varnish 放在 Apache 前面),但即使没有 Varnish,我们也希望使用 ESI 标签(例如,在本地开发设置中)。
是否存在用于此的 Apache 模块?
我在互联网上没有发现任何有用或清晰的东西。