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

symfony - Symfony2:ESI setMaxAge 缓存

我有一个控制器,其动作在树枝中呈现

{{ render_esi(controller('MyWebsiteBundle:Element:header')) }}

Action 本身如下所示:

当我重新加载浏览器时,"myTime"每次都会发生变化。

如何使用setShardeMaxAge(),以便仅在 MaxAge 过期后渲染 Twig?

0 投票
1 回答
676 浏览

php - Symfony ESI 缓存/代理侦听器问题

我有一个产品已部署到实时 Ubuntu 14.04 服务器,它在app_dev. 但是,当我在应用程序中运行它时,它会出现 503 错误,应用程序日志文件中包含以下内容:

我在 Vagrant 设置中得到了完全相同的代码,相同的操作系统版本,它在应用程序和app_dev

有没有人遇到过这个?

Symfony 2.7.0 / Ubuntu 14.04 / Distro PHP / mySQL - 尝试清除缓存并重新安装所有作曲家包。

[2015-06-09 16:36:43] request.INFO:匹配路由“fos_user_security_login”。{"route_parameters":{"_controller":"FOS\UserBundle\Controller\SecurityController::loginAction","_route":"fos_user_security_login"},"request_uri":" http://xxxx/app.php/login "} []

[2015-06-09 16:36:43] security.INFO:使用匿名令牌填充 TokenStorage。[] []

[2015-06-09 16:36:43] request.CRITICAL:未捕获的 PHP 异常 Symfony\Component\Debug\Exception\ContextErrorException:“可捕获的致命错误:参数 1 传递给 Symfony\Component\HttpKernel\EventListener\SurrogateListener::__construct () 必须是 Symfony\Component\HttpKernel\HttpCache\SurrogateInterface 的实例,给定 Symfony\Component\HttpKernel\HttpCache\Esi 的实例,在 /var/www/xxxx/app/cache/prod/appProdProjectContainer.php 中调用557 并在 /var/www/xxxx/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SurrogateListener.php 第 33 行定义”{“异常”:“[对象] (Symfony\Component\Debug\Exception \ContextErrorException(代码:0):可捕获的致命错误:参数 1 传递给 Symfony\Component\HttpKernel\EventListener\SurrogateListener::__construct() 必须是 Symfony\Component\HttpKernel\HttpCache\SurrogateInterface 的实例,给定 Symfony\Component\HttpKernel\HttpCache\Esi 的实例,在 /var/www/xxxx/app/cache/prod/appProdProjectContainer.php 上调用第 557 行,定义在 /var/www/xxxx/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SurrogateListener.php:33)"} []

(对于那些建议对日志行进行代码格式化的人,它将它们格式化为一行,这基本上意味着必须滚动它们才能阅读它们,这比上面更糟糕)。

0 投票
0 回答
775 浏览

php - 从 php 脚本控制 Varnish 缓存时间

在 Varnish 中可以使用 ESI 标签为页面上的多个部分提供不同的缓存时间。

使用清漆4

例如:index.php

边栏.php

配置清漆(default.vcl)

以上工作正常,但我很想从我的项目中找到一种方法来控制它。如果我得到很多 ESI 文件,这个配置文件会变得很大。

我想过这个:

index.php 中,作为第一件事:

sidebar.php中

在配置中( default.vcl )

现在这部分工作..如果我只在 index.php 中放入标头 max-age ,它将控制该页面被缓存的时间。最大的问题是 sidebar.php ( max-age=0 ) 会覆盖所有内容,因此不会缓存整个页面。

有谁知道解决方案.. 重要的是从 php 脚本中控制缓存时间( beresp.ttl )。

0 投票
1 回答
1564 浏览

php - Varnish ESI 请求——发送什么 Cookie?

清漆的新手,HTTP 的新手。如果这是新手/明显的领域,请道歉,但谷歌搜索并没有透露答案。

当 varnish 向esi include url发出请求时

  1. 它默认发送什么 cookie(和其他请求信息)

  2. 这是否可以通过vcl配置文件以编程方式控制。

那就是 - 我的理解是 esi 包含在清漆中的目的是允许将有状态的信息填充到从缓存中提取的页面中。这个有状态的信息(可能)由应用程序使用会话 id 获取,这通常是通过在 cookie 中发送的数据来实现的。

我不清楚的是,如果清漆只是通过

  • 原始请求的cookie信息
  • 应用程序的响应cookie
  • 别的东西

并且不管默认情况下传递什么清漆,这可以在清漆vcl文件中控制吗?

(一个 PHP 应用程序,如果重要的话)

0 投票
1 回答
543 浏览

varnish - ESI 内容可以在清漆中被禁止/无效吗?

我有一个使用 esi:include 标记来包含模块的内容页面,所以让我们说

/content.html

包含

两个 url 在其响应中发送缓存控制标头。对于 /content.html 它是

Cache-Control: public, max-age=86400

对于 /_esi/module.html 它是

Cache-Control:public, max-age=3600

当我加载 /content.html 时,我可以看到我从清漆中获得了一个缓存响应,并且 module.html 标记被适当地包含,但是,当我更改 module.html 并禁止它时:ban req.url == /_esi/module.html或者即使我使该禁令更广泛:ban req.url ~ _esi我的浏览器中的页面仍然没有改变。

我似乎在清漆文档中找​​不到太多关于此的内容。我是否能够显式地使包含的内容(即来自 ESI url 的片段)无效,还是必须等待它过期?

我也尝试实施和使用 PURGE 来实现这一点,但我似乎仍然无法从该包含中获得新鲜内容。

0 投票
0 回答
165 浏览

php - How do I get nested esi tags working?

I am using ESI with Symfony and Varnish. What I am trying to do is..

Render an esi block, inside another esi block.

Unfortunately the nested esi tags are not replaced.

Any ideas why?

0 投票
1 回答
201 浏览

varnish-vcl - 从缓存中获取包含 esi 标签的页面时,清漆不处理 ESI 请求?

我使用 ESI 不缓存页面片段。为了不缓存我的片段,我在 vcl 文件中编写了以下配置:

当 varnish 第一次从后端获取整个页面时,它会发送单独的“/fragment”请求并将其放在页面的适当位置。但是在刷新页面时,varnish 只对主页进行请求,并在缓存中找到它。然后它不会在此页面中查找 esi 片段,也不会发送请求。相反,它在缓存主页时存储在主页本身中,并在进行查找时从那里获取。我想知道如何在每次请求主页时从后端获取片段,同时从缓存中提供主页的其余内容。

0 投票
1 回答
926 浏览

c# - 如何使用 c# mvc 和 Varnish 进行甜甜圈缓存?

我添加到清漆配置

}

在我的 mvc 应用程序中,我有一个 childaction

并添加了一个请求头

但是 Varnish 一直在缓存整个页面。

我想念什么?我在浏览器中注意到请求标头 X-Esi 不存在。还清漆正确删除标签<esi:include

GetHour 中的代码非常简单,只需从 SQL Server 中检索一个小数。

0 投票
1 回答
707 浏览

html - esi:include src 可以用作html页面中的esi变量吗

例子:

esi:assign 和 esi:include 在通过 akamai cdn 呈现的 html 页面中的问题

0 投票
0 回答
475 浏览

symfony - Symfony 2.7 如何访问_fragment?

经过几个小时的搜索,我在这里问这个问题,因为我认为没有找到这个问题的答案。

问题非常简单:尝试访问 _fragment 外部的 twig 可以很好地使用 twig 中的 render_esi 函数。

我在 config.yml 中禁用了可信代理条目:

在security.yml中,我输入:

当我尝试通过 Web 浏览器访问任何片段时,我得到了 AccessDenied Exception 并在探查器中显示消息:“您未登录”。

这是什么问题?为什么分析器说我没有登录?

这是最后的错误日志:

谢谢