问题标签 [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 回答
224 浏览

caching - 如何通过 IP 使用 Varnish 4.x 缓存 ESI 片段和相应的输出

我正在尝试使用 Varnish 4.x 中的 ESI 从我的 (PHP) 后端获取数据。我想将结果保存(缓存)在我的 Varnish 实例中。结果对于每个 IP 地址 (client.ip) 都是唯一的,因此缓存结果的哈希必须包含 client.ip。Varnish 没有按预期缓存。我似乎无法基于 IP 进行缓存。为了让您了解我尝试过的内容,请参见下文。

独特的.js:

独特的.php:

default.vcl(提取):

显然我错过了一些东西。任何提示表示赞赏!

0 投票
0 回答
645 浏览

php - render_esi & controller => Lost Session

I ask you a question because I browsed all the web but I've not found any answer to my bug.

When I use the "render_esi" function from twig with "controller" function, the target page (protected by access_control) is showed, but when the cache time limit is reached (10 seconds after in my case) and I refresh the page, I'm redirected to the login page because I've lost my session (the session_id is changed).

#xA;

I precise that I used the Symfony2 integrated Reverse proxy and not Varnish.

I don't want to create specific route for each sub-requested parts of my application.

I want to use the "_fragment" system of Symfony for convenience and mostly for security.

Solution

I found the solution per coincidence at the turn of another bug.

Symfony don't bring confidence to proxies by default (mostly with the Symfony AppCache activated).

You've to add 127.0.0.1 (the Symfony Reverse proxy) to the trusted proxies list and the esi don't logout you and redirect to home again.

Explains from Symfony french's documentation: http://symfony.com/fr/doc/current/components/http_foundation/trusting_proxies.html

"Lorsque vous utilisez le reverse proxy interne de Symfony (AppCache.php), assurez vous d'avoir ajouté 127.0.0.1 à la liste des proxies de confiance."

hope it helps someone.

0 投票
0 回答
247 浏览

performance - Magento - Varnish / ESI:Include / 基于 Cookie 的自定义定价

我正在使用 Varnish 的站点中实现 esi:includes。这样做的主要原因是能够根据保存到 cookie 中的邮政编码为用户提供北/南定价。但是,现在的性能似乎是一个很大的问题。见:http ://stage.mobelringen.trollweb.no/soverommet/sovesofaer.html

价格块正在单独且缓慢地加载。

有没有更好的方法来实现这一点?例如,在确定用户区域后修改 url 以指定 'n' 或 's',以便产品和类别页面可以在 'n' 和 's' 版本中完整缓存?

0 投票
1 回答
557 浏览

nginx - nginx SSI 模块;禁用文件包括?

我正在查看 NGINX SSI 模块,我想知道是否有办法阻止 SSI 上的“文件”选项。

http://nginx.org/en/docs/http/ngx_http_ssi_module.html

所以有人不这样做

我在包含文件方面找不到太多关于安全性的信息,有人知道吗?

0 投票
1 回答
81 浏览

symfony - 如何在 symfony2 / twig 中处理和调试缓存变体

我想知道如何处理和检查我正在创建的缓存变体。

假设我有一个项目并添加...

...到每一页的开头。在这种情况下 app.user 它是 fos_user_bundle 的一部分

对于每个用户,页面都会有不同的内容(用户名)。因此,缓存变体的数量会立即乘以用户数量。

之前:100 页,100 个缓存变体

之后:100 页 * 500 个用户 = 50.000 个缓存变体

symfony2 会为每个终端的每个用户创建缓存变体吗?这是哪里控制的?

我知道我可以使用边缘包含(ESI)。为了防止产生变体,我必须在这里做吗?

我在哪里可以查看和检查我正在生成的缓存变体的数量?

谢谢你的帮助。

0 投票
2 回答
1315 浏览

php - Symfony ESI 获取 POST 参数用于 FORM 提交或调用 ESI 作为 POST

我有一个缓存站点,其中有一个不应缓存的表单。我使用 ESI。提交表单时,我需要在控制器中获取 POST 参数。Symfony 让我得到请求参数“表单”而不是真正的 POST 数据,或者有没有一种很好的方法来获取它们。

由于父页面缓存,将它们设置在 twig 中将不起作用。

那么如何在我的控制器中获取 post 参数,这里显示的代码只能获取 ESI 数据:

如何从父请求中获取参数?

哈克解决方案

目前我发现的唯一解决方案对我来说太 hacky
TWIG:

PHP:

额外的

经过一番研究并查看 symfony 核心代码后,我需要将 ESI 更改为 Post,所以我的问题是知道“如何将 ESI 称为 POST 方法而不是 GET?

解决方案

Chris Tickner使用像张贴的requestStack似乎是发布解决方案。

0 投票
0 回答
192 浏览

http - esi如何获取request的协议

标题说明了一切,我想知道如何使用 ESI 访问协议(http 与 https)。在开发人员指南 ( http://www.akamai.com/dl/technical_publications/akamai_esi_developers_guide.pdf ) 或其示例页面上找不到任何内容。

任何人都有查看协议的经验,或者至少是 ESI 的 url?

0 投票
1 回答
332 浏览

php - Symfony2 ESI:标记为公共的响应,即使子请求包含私有响应

我为我的 symfony 项目启用了 ESI,并尝试为我的主页提供标记为公共的服务,其中包括一个私有片段。

主页控制器:

主页视图:

ESI 控制器:

在本地调试模式下,我的主页使用嵌入的内容提供服务,但响应被标记为公共,即使包含的片段被标记为私有。不应该是私人的吗?

0 投票
1 回答
376 浏览

magento - Magento Varnish 缓存块对登录用户可见

我的客户 Magento 站点托管在 SiteGround 上,并激活了 SuperCacher。SuperCacher 是 Varnish 的 SiteGround 优化版本。

它使用一个版本的 Turpentine 进行 Varnish 缓存。

我有只对登录用户可见的搜索块。当 Varnish 被激活时,这个块不会出现。

当我为 Search 块指定 ttl 0 的 f ESI 策略时,它变得可见,但对于登录和注销的用户都是可见的。

如何将此块保留在缓存之外并仅显示给登录用户?

0 投票
0 回答
248 浏览

symfony - 在生产环境中找不到 Symfony ESI 片段

我尝试像 Symfony 的文档建议那样将 Varnish 与 ESI 支持相结合。

所以,我设置了我信任的代理和片段路径。

在 DEV 环境中一切正常,但在生产中,我收到 404 错误 Not found for fragment 。

这不是 symfony 缓存问题。我删除了所有缓存,但我继续收到此 404 错误。

这是 Symfony 未生成的 apache 404 错误响应,所以我尝试在 URL 中添加 app.php 并得到了片段。

所以问题很清楚:这是HTACCESS问题。如何解决这个问题?为什么他们不在 Symfony 文档中谈论这个?

你有答案吗?

我正在使用 symfony 2.6。

谢谢你。