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

zend-framework - 使用 Varnish/ESI 和 Zend 框架缓存和页面视图

我有几个场景,我最终需要在几个月后考虑。只是把问题扔在那里,以便我可以同时考虑讨论。

我正在为我的应用程序堆栈使用 Zend Framework。我正在使用 APC 进行服务器缓存(而不是 memcache,因为我不相信 memcache 对我有任何好处,即使我的应用程序是分布式的。)

我的应用程序是在没有 JavaScript 的情况下构建的,然后为了支持 JavaScript,我将页面分解并呈现 JavaScript 友好版本。

如果分析一个简单的页面,可能 80% 是核心功能,可以为每个用户缓存。然后为该用户定制其中的 20%。例如,我可能想显示

  • 最后 5 个查看的项目
  • 收藏品

这两个“小部件”将特定于每个用户。我正在考虑对这些组件使用 ESI,但后来我发现任何/我的 Zend Framework 应用程序最消耗的方面是引导和调度过程。因此,如果我的应用程序当前需要 80 毫秒而没有缓存。就像 90% 的相对时间花在引导程序和插件挂钩上,如果我要使用 ESI 加载这两个“小部件”,那么我会有效地将负载添加到每个页面?因为我将为每个缓存页面启动另一个 80 毫秒的请求。

在这种情况下,您是否建议仅通过 JavaScript 加载自定义的小部件/片段,一旦加载初始页面就可以拉取。这样做的明显好处是只有一个请求被缓存,然后在初始页面(被缓存)被提供后,任何定制的东西都会被拉入一个请求中。

如果我正在寻找最高性能,这似乎是更好的解决方案?

0 投票
1 回答
1037 浏览

zend-framework - 使用 Varnish 和 ESI 增加页面查看次数

如果我使用 Varnish 来缓存我的整个文档,你会建议我通过什么机制来增加页面浏览量。

例如,假设我有一个拍卖列表,例如 ebay,我想缓存整个页面,因为我知道它永远不会改变。

然后,您将如何增加此列表的页面查看次数。

假设我的应用程序是从 Zend Framework 运行的。将 ESI(Edge Side Include)添加到 node.js 服务器以增加 Redis 中的页面查看计数是否正确?

我正在寻找能够 100% 支持并能产生准确的页面查看请求数的东西。(我也不担心重复请求,我将在我的应用程序逻辑中处理它,以防止一个 IP 破坏页面查看次数)。

0 投票
1 回答
1207 浏览

zend-framework - 如何在 Zend Framework 1.11 项目中实现 Varnish

我对 Varnish 了解不多,但据我所知,我需要在我的视图中包含 ESI 标签,对吗?

你们中有人对实施这种架构有任何反馈吗?

我已经找到了一些视图助手来设置 ESI 标签,但我不确定它们是否真的有效。

我想使用 Varnish 来缓存我的主页,比如说 10 到 30 秒。

采埃孚容易做到这一点吗?

0 投票
1 回答
1189 浏览

symfony - Symfony2、Varnish 和 ESI 导致奇怪的行为

我有以下配置:

(使用 Apache 和 mod_php 的行为相同)我的 Varnish 配置:

ESI 在app/config/config.yml. 我在 symfony 中配置了以下路由:

  • /esiouter使用 s-maxage 60 并具有 esi-include for /esiinner(使用“普通”esi-tag 或 twig-render 函数{'standalone': true}):<esi:include src="/esiinner" />
  • /esiinner使用 s-maxage 10(由 esi-include 获取)

现在,当我在 symfony 中启用 AppCache 时,会web/app.php评估 ESI 标记,因此 varnish 不会得到它们,并且我们有一个Content-Length标题并且内容没有被分块。如果我禁用 AppCache,varnish 会评估 ESI 标记并将内容分块发送,并且没有Content-Length标头。

为什么 Varnish 发送分块响应并且不缓冲 esi 块并将页面作为一个整体发送?如果我在带有 ESI 的 Symfony 应用程序前面使用 Varnish,我是否必须使用 Symfonys AppCache?

0 投票
1 回答
566 浏览

validation - Symfony2 主页 HTTP 缓存验证和独立 ESI

我正在设计一个与 Symfony2 博客具有相同结构的项目。

我的主页显示文章并有一个侧边栏,其中有登录链接,或者如果我们登录,则链接到我们的帐户。

我的侧边栏是 ESI,我的问题:如果我在主页上设置验证缓存(取决于我上一篇文章的更新日期),侧边栏是否会独立于该缓存显示其内容?否则,是否有另一种解决方案来做到这一点?(将文章列表设置为 ESI,但是 ESI 可以有验证缓存吗?)。

谢谢您的回答

0 投票
1 回答
814 浏览

varnish - Varnish ESI 在 html 注释上中断

我正在运行一个 drupal 站点并实施 esi 支持。

到目前为止,当我在这样的块上实现基本 esi 支持时一切正常:

现在,只要标签内没有 html 注释,这就会非常有效。但是当esi里面有html评论时,只会删除一部分html评论。这导致所有以下 html 被注释掉并且不被显示

经过清漆处理后是这样的:

现在可以从 html 中删除所有评论,但这似乎不是解决方案。

有没有人遇到过类似的问题?我会非常感谢一些帮助

0 投票
1 回答
1718 浏览

symfony - Symfony 2 中的 Edge Side Includes 和验证缓存

是否可以在带有 Symfony 2 的 ESI 中使用验证缓存?

如果你查看HttpFoundation Response类,你可以看到 isNotModified 是如何工作的:

问题是 ESI $request->headers->get('If-Modified-Since'); 并且 $request->getEtags() 在 ESI 中不返回任何内容......所以缓存永远不会新鲜!

那么你有 $request 的解决方案吗?

如果验证 HTTP 缓存不能在 ESI 中工作,是否有另一种缓存部分的方法?

谢谢 !

0 投票
1 回答
365 浏览

cdn - 使用低流量的 CDN 现实吗?

我有一个应用程序,我想在边缘端包含的 CDN 上托管,即使我的网络流量相对较低。这对于像 Akamai 这样的大牌 CDN 是否可行,或者他们会告诉我迷路吗?它要花多少钱?MaxCDN 看起来是一个很好的第一步,但我认为他们不能做边缘包含。

0 投票
4 回答
7568 浏览

varnish - 清漆不处理 ESI 包括

我正在尝试设置 Varnish 以处理本地环境中的 ESI 包含。

我在虚拟机中运行清漆,内容在主机上运行。

我有两个文件“index.html”和“test.html”。它们都存储在 apache 服务器的 docroot 中名为“esi”的文件夹中。

索引.html

测试.html

Varnish 在虚拟机的 8000 端口上运行。所以我在这里访问它:http: //192.168.56.101 :8000/esi/

在虚拟机上的 /etc/varnish/default.vcl 中,我已将以下配置添加到文件底部:

考虑到它应该处理所有请求的 ESI(不要关心它是否只是试图让这个东西工作的不好的做法:))

我加载http://192.168.56.101:8000/esi/时的结果是:

IE。ESI 显示在标记中,它没有被处理。

我检查了 Varnish 日志,但是那里没有错误,也没有与 ESI 相关的内容。

谁能看到我在这里做错了什么?让我知道是否需要更多信息..谢谢

0 投票
1 回答
788 浏览

caching - Varnish & ESIs : Fetching in parallel and possible workarounds

I'm investigating using Varnish with ESIs to cache page content for a high traffic forum-like website.

Context : I want to cache content for visitors only (connected users will have a really different display and need absolute fresh content). Still, for visitors, some parts of a page need to be dynamic : - not cachable, for example for a visitor-dependant module (think a 'suggestion' widget that is fed with a real-time analysis of the pages viewed, thanks to a beacon) - cachable with a small TTL of 15mn, for example for a 'latest posts' widget or for very changing ads campaigns.

Currently we are using Apache/PHP/symfony/memcache to cache pages and have in-house ESI-like mecanism : a page from cache is parsed and some specific tags are interpreted (including calls to web services and/or databases). This is not performant enough since server time is then around 700ms.

In remplacement of this solution, we can have Varnish+ESIs. The total nb of ESIs included in a page can reach 15. The real number of ESIs to fetch will be less than that but not so much given the ESI's TTLs. The critical problem is that Varnish fetches the ESIs sequencially instead of parallel and this is not acceptable. This feature is somewhere late in Varnish's roadmap.

So,

  • What is your experience with Varnish and ESIs ? How many ESIs, response time gain that you have ?

  • Do you know workarounds or other serious and configurable (VCL was nice) reverse-proxies with parallel ESI fetching ?

  • If not, what kind of good caching strategy do you use for equivalent use-cases ?

Thanks, P.