标签: edge-side-includes

Varnish和ESI,性能如何?

我想知道当前ESI模块的性能如何?我在网上看过一些关于清漆上的ESI性能实际上比实际情况慢的帖子.

说我有一个超过3500 esi包含的页面,这将如何表现?esi是为这种用途而设计的吗?

caching reverse-proxy varnish server-side-includes edge-side-includes

9
推荐指数
1
解决办法
3475
查看次数

如何在ESI中设置cookie:include脚本?

我有一个基本的PHP页面通过Varnish加载,其中包含一个ESI回调服务器来设置cookie.cookie是通过域访问等设置的,但是当通过ESI调用时,cookie永远不会被设置.如果直接访问ESI包含路径,则cookie设置没有问题.我甚至设置了我的Varnish配置永远不会缓存任何东西,认为VCL可能会杀死cookie.

这个...

<esi:include src="/init.php?<?=http_build_query($_GET); ?>"></esi:include>
Run Code Online (Sandbox Code Playgroud)

......包括这个......

<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

setcookie('superman', 'clark kent', 0, '/', '.whatever.com');

?>
Run Code Online (Sandbox Code Playgroud)

我是Varnish和ESI的新手,所以我开始怀疑这是否是一个已知的限制(使用ESI或使用Varnish的ESI实现),但我在网上找不到任何关于我的问题的讨论.

php cookies varnish edge-side-includes

8
推荐指数
1
解决办法
3513
查看次数

6
推荐指数
0
解决办法
954
查看次数

后处理反向代理HTTP请求?(如Akamai的ESI)

我们运行一个相对较高的内容网站.与大多数内容网站一样,每个网页的大部分都是相对静态的.文章很少改变,使它们成为某种形式的静态/边缘缓存的良好候选者.但是,有两个大问题.辅助页面元素(导航,最近的内容列表等)经常更改,快速使"完整"缓存页面无效.我们在页面中包含更多动态位也很常见,例如用户特定信息等.

拥有一个后处理内容的反向代理/负载均衡器并让我们处理包含在代理/边缘的内容真的很巧妙.对后端的初始请求将返回粗略模板,然后代理软件可以处理该模板以完成它.标记可能看起来像这样:

<html>
<body>
  <div id="content">
    Lorem ipsum whackem smackem.
    <%
      dynamic "http://related.content.service/this/story"
    %>
  </div>
  <div id="sidebar">
    <%
      dynamic do |request|
        url = "http://my.user.service/user-widget.html"
        if request.cookies.contains?("user_token")
          url = "http://my.user.service/" + request.cookies["user_token"] + "/user-widget.html"
        end

        error_text = "User service not available"
        { :url => url, :timeout => 500, :error => error_text }
      end
    %>
  </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

您将在该示例中看到的是一小部分Ruby,它根据cookie值确定包含的文件,然后返回带有要拉入的URL的哈希值,超时值以及一些默认文本,以便在错误.理论上,所有包含也可以异步请求.

我的理解是亚马逊做了这样的事情.后端服务生成各种页面组件,具有严格的超时限制以确保整体页面速度.我希望他们的CDN服务会包含这样的东西,但它不是!

Edge Side Includes(ESI)的W3规范几乎就是我想要的.然而,对它的支持很少.它可以通过Akamai获得,有一些Oracle软件可以做到这一点,开源Varnish缓存有一个非常基本的实现.它也是一种非常丑陋的XML格式.

所以问题是:那里有什么让我做我想做的事情?是其他人以这种方式做事吗?

proxy amazon caching reverse-proxy edge-side-includes

6
推荐指数
1
解决办法
2692
查看次数

CloudFront 与 Edge Side 包括在内吗?

我最近才在阅读 Varnish Cache 的功能,以帮助优化我的 PHP 网站的性能。我读到了一个名为 Edge Side Includes 的功能,它似乎让我可以选择构建可以缓存在组件级别的 html 内容小部件。这样单个页面的动态内容可以缓存页面的一部分,而不缓存其他部分。

然后我开始研究 Amazon CloudFront,它似乎也提供页面级缓存功能。但我不清楚 CloudFront 是否提供等效的 Edge Side Includes。如果可能的话,有人可以为我澄清吗?这会影响我构建 PHP 网站的方式。

varnish amazon-cloudfront edge-side-includes

5
推荐指数
1
解决办法
1838
查看次数

将Varnish与SaaS HTTPS后端服务器配合使用?

我想配置Varnish使用HTTPS(!)服务作为后端服务.这里的关键是与后端服务连接的SSL部分!我对这些HTTPS后端服务的控制有限(将它们视为托管在云中的SaaS服务).

它是这样的设置:User-Agent - > AWS ELB作为SSL终结器 - > AWS中的Varnish - >云中的HTTPS SaaS服务

原因如下: - 我想使用Varnish ESI用我自己的自定义页面页眉和页脚来装饰SaaS服务UI. - 通过让所有请求通过Varnish,我获得了有关SaaS服务的其他分析数据,否则我将无法获得 - 我可以使用Varnish重新编写SaaS服务的URL,从而有效地隐藏最终用户的SaaS服务URL

我能够将AWS ELB用作用户代理的SSL终止符,但是如何让Varnish作为源服务器访问HTTPS SaaS服务?

背景:我在一个门户网站上工作,我们将向客户展示许多不同的服务(所有服务都有自己的现有用户界面,即他们没有无头的RESP API!).将所有这些服务集中在一起的主要因素是常见的页眉和页脚(页眉显示顶级导航和登录/用户名注销).

我们拥有的服务类型如下,都有自己的UI层,我们不想复制: - 白色标记的第三方SaaS服务(例如Zendesk或Salesforce),托管在云端 - 内部开发了AWS中托管的JavaEE/Spring服务 - 我们公司其他团队开发的服务,但它们托管在我们自己的数据中心

添加ESI包含对于每个服务都很好,但我不想重复为每个服务重复多次重新实现页眉/页脚的工作.

https portal saas varnish edge-side-includes

4
推荐指数
2
解决办法
7958
查看次数

通过ESI设置Cookies:包括,如何?

我试图使用esi在我的网站上制作忍者缓存.这个想法是,该网站大多是静态的,如果用户登录或者不登录,我只需要做一些奇特的东西.所以我试图在页面A上放置一个,并在页面B的应用程序中设置触发器.

这样我可以在清漆上缓存页面A,让服务器处理页面B的小工作.

但是我在B页上发布的cookie没有被转发到页面A的标题但是没有用到/ /

这是我试图做的可能吗?

我可以使用ajax,但在将页面发送给用户之前在服务器内执行此操作对我来说更正确.

ps:我无法创建esi标签= /

ruby-on-rails nginx varnish edge-side-includes

4
推荐指数
1
解决办法
1397
查看次数

Varnish Cache不会做ESI包括

即使是最简单的Varnish Cache ESI测试也无法正常工作.
经过尝试和尝试,我想我在这里问.

基本上它只是不包括ESI文件.它只是返回HTML而不做它的包含.

这是我的varnish start命令:

varnishd -f /etc/varnish/default.vcl -s malloc,128M -T 127.0.0.1:2000 -a 0.0.0.0:8080;
Run Code Online (Sandbox Code Playgroud)

这是我正在测试的URL:

http://vbox.local:8080/varnish-tests/test.php
Run Code Online (Sandbox Code Playgroud)

我的vcl规则:

1)default.vcl

backend default {  
.host = "127.0.0.1";  
.port = "80";  
}  

sub vcl_fetch {  

  if (req.url ~ "test.php") {  
      esi;  /* Do ESI processing */  
      set beresp.ttl = 24h;  
  } elseif (req.url ~ "esi_1.php") {  
      set beresp.ttl = 1m;  
  }  
return(deliver);  
}  
Run Code Online (Sandbox Code Playgroud)

我的示例测试esi代码

2)test.php

<html>  
<head>  

<?php echo "Time 1: ".time(); ?>  

<br />  

The time 2 is: <esi:include src="/varnish-tests/esi_1.php"/> at …
Run Code Online (Sandbox Code Playgroud)

php include varnish edge-side-includes

4
推荐指数
1
解决办法
4699
查看次数