问题标签 [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 - 如何使用 ESI 构建 Symfony2 应用程序?
在一个流量很大的新项目中,我们正在考虑如何构建我们的 Symfony2 应用程序以利用缓存,并准备好在未来变得更加积极。我很想知道你的意见。
假设用户向页面请求地点列表。这个页面有:
HTML 可能类似于:
HTML 将缓存在网关上(Symfony 或 Varnish)。地点列表也将大部分时间缓存在网关上。用户数据请求将是那些被调用但不被缓存的(至少最初不是)。
问题:
- 你觉得这个结构怎么样?
- 如果用户是匿名的,我可以避免为用户数据制作 esi-includes 吗?另外,如果我有匿名用户的 cookie?如何?
- 用户菜单的 esi-include 是否有意义?
- 还是我们应该忘记 ESI 并始终通过控制器(例如缓存公共数据的渲染视图)?
- 我们是否应该将要求用户数据的 2 个 ESI 请求移动为 AJAX 调用,而不是在服务器上等待?
- 如果我们需要快速扩展,这是一种很好的扩展方法吗?什么是最好的?
多谢!
caching - 使用 ESI 作为用户菜单有意义吗?
用户菜单的 ESI 对您有意义吗?
我用 s-maxage 缓存的主页:
我通过 ESI 用户菜单包含的位置:
登录用户的用户菜单不同。
为此使用 ESI 有意义吗?
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)
php - 如何在外部/独立 PHP 文件(Wordpress 之外)中调用 Wordpress 片段
我正在尝试设置一个独立的 PHP 文件,该文件能够使用当前安装的插件的简码。该文件将完全位于我当前安装的 Wordpress 之外。
我这样做是因为 ESI 需要调用 php 文件(以及最终的插件短代码功能),因为我的网站正在由 Varnish 处理。
我正在使用的插件:http ://wordpress.org/extend/plugins/custom-content-by-country/
我目前和不成功的尝试使这项工作:
任何帮助将不胜感激。谢谢
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 缓存。我敢肯定,如果我们缓存每个子文档,我们可能会达到内存限制并开始核对项目......但是清漆不使用某种最近最少使用的算法吗?
apache - 在 Mac osx 或 windows 上安装 ESI(用于 localhost 测试)
希望一些服务器端专家可以回答这个问题或为我指明正确的方向。
我们在公司网站设置中使用 Akamai。因此,“ESI”文件被广泛使用。
我在 Mac osx 上安装了带有 bitnami 软件包的“mamp”。如何在我的 apache 之上添加 esi 功能?
许多谷歌搜索表明也许 squid 代理或清漆代理可以允许此功能。这是对的吗?当没有域名并且没有实时公开的东西,只有我自己的机器时,我可以在“本地主机”的情况下使用这些吗?
欣赏任何见解。也许我在谷歌上搜索错了。
谢谢!
caching - 为什么使用 Symfony2 缓存响应中的 ESI 标签会被忽略?
我有一个电子商务应用程序,我正在尝试设置缓存 - 最初通过 Symfony2 反向代理,但最终通过生产中的 Varnish。我在 Apache2 上使用 Symfony 2.1.8。
我的问题是当主控制器操作被缓存时,我无法为每个请求重新检查 ESI 标签(对于像购物篮内容这样的私有内容很重要),但我不明白为什么。
例如,我使用以下代码缓存主页:
呈现的模板扩展了基本布局模板,其中包括以下 ESI 以显示篮子:
(编辑:阅读 Diego 的回答后,我也使用了推荐的语法:
不幸的是,这没有任何区别。)
我一直在使用篮子摘要的代码,但这是我目前所拥有的。
在主页以外的页面(尚未缓存)上,购物篮摘要缓存工作得很好,它始终显示正确的数据。只有当您返回主页时,您才会看到过时的信息。日志记录确认summaryAction
除非indexAction
实际呈现,否则不会在主页上调用。
编辑
在每个页面请求之后使用error_log($kernel->getLog())
我得到这个非缓存页面:
这对于缓存的主页:
我一定遗漏了一些明显的东西,但文档似乎没有涵盖这一点,但这意味着它只是 ESI 应该用于的那种事情。
caching - Symfony2.2 渲染 ESI 模板
从文档中,没有关于如何使用 ESI 在模板中呈现模板的示例。有可能这样做吗?
例如,我有一个模板index.html.php
,我想form.html.php
用 ESI 渲染模板。怎么做?
caching - Symfony2 esi 缓存用户信息
我需要缓存我的主页,这远没有问题,使用反向代理就足够了
但我还需要包含带有独立 (ESI) 的标题部分,以便我可以检查用户是否已连接并显示他的信息“你好文森特”。
问题是如果我这样做,主页(作为每个页面)将不得不测试会话,并且当我使用 PDO 存储时,我可以看到每个用户/页面在 MySQL 上运行 2 个查询。
所以我尝试添加一个简单的“is_connected”cookie,并检查它是否存在以呈现注销版本而不询问会话,但似乎只要我有一个允许匿名用户的防火墙,它就会询问会话。
我的想法不多了,我想看看人们为此做了什么,目标是在主页上根本没有查询。
谢谢
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 这里是我安装的包