问题标签 [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 投票
1 回答
2504 浏览

caching - 如何使用 ESI 构建 Symfony2 应用程序?

在一个流量很大的新项目中,我们正在考虑如何构建我们的 Symfony2 应用程序以利用缓存,并准备好在未来变得更加积极。我很想知道你的意见。

假设用户向页面请求地点列表。这个页面有:

HTML 可能类似于:

HTML 将缓存在网关上(Symfony 或 Varnish)。地点列表也将大部分时间缓存在网关上。用户数据请求将是那些被调用但不被缓存的(至少最初不是)。

问题

  1. 你觉得这个结构怎么样?
  2. 如果用户是匿名的,我可以避免为用户数据制作 esi-includes 吗?另外,如果我有匿名用户的 cookie?如何?
  3. 用户菜单的 esi-include 是否有意义?
  4. 还是我们应该忘记 ESI 并始终通过控制器(例如缓存公共数据的渲染视图)?
  5. 我们是否应该将要求用户数据的 2 个 ESI 请求移动为 AJAX 调用,而不是在服务器上等待?
  6. 如果我们需要快速扩展,这是一种很好的扩展方法吗?什么是最好的?

多谢!

0 投票
1 回答
122 浏览

caching - 使用 ESI 作为用户菜单有意义吗?

用户菜单的 ESI 对您有意义吗?

我用 s-maxage 缓存的主页:

我通过 ESI 用户菜单包含的位置:

登录用户的用户菜单不同。

为此使用 ESI 有意义吗?

0 投票
1 回答
402 浏览

wordpress - 使用 Wordpress 3.5 小部件清漆 ESI

我正在尝试使用 Varnish ESI 语句来避免单个 Wordpress 小部件上的缓存。

我在这里找到了一个很好的指南,解释了对整个侧边栏使用 ESI 的过程:http: //timbroder.com/2012/12/getting-started-with-varnish-edge-side-includes-and-wordpress.html但很难弄清楚它是如何为单个小部件完成的。

其他详情:

  • 网站网址: livefeeedietravelling (dot com)
  • 清漆: 3.0.3 Wordpress
  • 版本: 3.5
  • 服务器: nginx/1.2.6(带APC)
0 投票
1 回答
3549 浏览

php - 如何在外部/独立 PHP 文件(Wordpress 之外)中调用 Wordpress 片段

我正在尝试设置一个独立的 PHP 文件,该文件能够使用当前安装的插件的简码。该文件将完全位于我当前安装的 Wordpress 之外。

我这样做是因为 ESI 需要调用 php 文件(以及最终的插件短代码功能),因为我的网站正在由 Varnish 处理。

我正在使用的插件:http ://wordpress.org/extend/plugins/custom-content-by-country/

我目前和不成功的尝试使这项工作:

任何帮助将不胜感激。谢谢

0 投票
1 回答
534 浏览

caching - 边缘边的限制在一页内包含?

目前,我们有一项基于各种获取参数创建 XML 页面的服务。随着参数数量的增加,不同组合的数量也在增加,这意味着我们的清漆缓存中的命中率下降了。我们增加了 TTL,因此命中率也增加了,但我正在考虑以下想法:

我刚刚遇到 Edge Side Includes 并在想.. 如果我每次生成包含 50 个元素的 XML 页面,我是否可以生成一个包含 50 个 ESI 的页面,然后清漆将合并到一个文档中?

为什么要问 50 个 ESI 元素?因为每个 XML 元素本身很容易被一个 URL 缓存,但是过滤器的组合会导致生成大量不同的完整 XML 文档。

因此,即使一个请求过滤掉了前 10 个 XML 元素(因为它们没有确认获取参数),因为使用了 ESI,每个元素都将从缓存中获取。

这在服务器上会有多重?这样做有意义吗?ESI 是否非常昂贵,在这种情况下它没有意义。

更新


首先,我们从未耗尽内存,Nuke 为零。我们目前的命中/未命中率为 0.4,ttl 为 4 小时,在我看来这很糟糕……由于所有这些组合(国家、地区等)。更糟糕的是,tomcat 已达到 100% 的利用率并挂起,而 varnish 则停留在 1-3% 的研究中。我的直觉说,用清漆缝合 ESI,并记住子文档将更好地保护 tomcat 并增加我们的容量。我们从来没有奇怪地 Nuke 项目,这意味着在缓存条目过期之前它永远不会填充 ~ 1GB 缓存。我敢肯定,如果我们缓存每个子文档,我们可能会达到内存限制并开始核对项目......但是清漆不使用某种最近最少使用的算法吗?

0 投票
2 回答
718 浏览

apache - 在 Mac osx 或 windows 上安装 ESI(用于 localhost 测试)

希望一些服务器端专家可以回答这个问题或为我指明正确的方向。

我们在公司网站设置中使用 Akamai。因此,“ESI”文件被广泛使用。

我在 Mac osx 上安装了带有 bitnami 软件包的“mamp”。如何在我的 apache 之上添加 esi 功能?

许多谷歌搜索表明也许 squid 代理或清漆代理可以允许此功能。这是对的吗?当没有域名并且没有实时公开的东西,只有我自己的机器时,我可以在“本地主机”的情况下使用这些吗?

欣赏任何见解。也许我在谷歌上搜索错了。

谢谢!

0 投票
2 回答
2647 浏览

caching - 为什么使用 Symfony2 缓存响应中的 ESI 标签会被忽略?

我有一个电子商务应用程序,我正在尝试设置缓存 - 最初通过 Symfony2 反向代理,但最终通过生产中的 Varnish。我在 Apache2 上使用 Symfony 2.1.8。

我的问题是当主控制器操作被缓存时,我无法为每个请求重新检查 ESI 标签(对于像购物篮内容这样的私有内容很重要),但我不明白为什么。

例如,我使用以下代码缓存主页:

呈现的模板扩展了基本布局模板,其中包括以下 ESI 以显示篮子:

(编辑:阅读 Diego 的回答后,我也使用了推荐的语法:

不幸的是,这没有任何区别。)

我一直在使用篮子摘要的代码,但这是我目前所拥有的。

在主页以外的页面(尚未缓存)上,购物篮摘要缓存工作得很好,它始终显示正确的数据。只有当您返回主页时,您才会看到过时的信息。日志记录确认summaryAction除非indexAction实际呈现,否则不会在主页上调用。

编辑

在每个页面请求之后使用error_log($kernel->getLog())我得到这个非缓存页面:

这对于缓存的主页:

我一定遗漏了一些明显的东西,但文档似乎没有涵盖这一点,但这意味着它只是 ESI 应该用于的那种事情。

0 投票
1 回答
5075 浏览

caching - Symfony2.2 渲染 ESI 模板

文档中,没有关于如何使用 ESI 在模板中呈现模板的示例。有可能这样做吗?

例如,我有一个模板index.html.php,我想form.html.php用 ESI 渲染模板。怎么做?

0 投票
1 回答
146 浏览

caching - Symfony2 esi 缓存用户信息

我需要缓存我的主页,这远没有问题,使用反向代理就足够了

但我还需要包含带有独立 (ESI) 的标题部分,以便我可以检查用户是否已连接并显示他的信息“你好文森特”。

问题是如果我这样做,主页(作为每个页面)将不得不测试会话,并且当我使用 PDO 存储时,我可以看到每个用户/页面在 MySQL 上运行 2 个查询。

所以我尝试添加一个简单的“is_connected”cookie,并检查它是否存在以呈现注销版本而不询问会话,但似乎只要我有一个允许匿名用户的防火墙,它就会询问会话。

我的想法不多了,我想看看人们为此做了什么,目标是在主页上根本没有查询。

谢谢

0 投票
1 回答
874 浏览

php - 在 symfony 2.1.8 中启用 ESI 时出现 Twig 语法错误

我尝试将带有 {'standalone': true} 的 ESI 渲染添加到我的一个树枝模板中,并且收到以下 TWIG 语法错误:

Unexpected token "punctuation" of value "," ("end of statement block" expected) in AccommMiddleBundle:Home:layout.html.twig at line 155

这是相关的树枝模板块:

删除 , {'standalone': true} 使模板渲染得很好。

我将 Symfony 2.1.8 与干净的供应商一起使用,似乎与标准版依赖项没有区别。关于如何调试的任何想法?

谢谢你的帮助

迈克B

ps 这里是我安装的包