gpt4 book ai didi

caching - Symfony2 : Private ESI Fragment

转载 作者:行者123 更新时间:2023-12-01 11:42:44 27 4
gpt4 key购买 nike

我想知道是否存在类似私有(private) ESI 片段的东西。在 the docs我读了:

  1. “设置共享的最大年龄 - 这也将响应标记为公开
  2. “一旦您开始使用 ESI,请记住始终使用 s-maxage 指令而不是 max-age。由于浏览器只接收聚合资源,因此它不知道子-组件,因此它将遵守 max-age 指令并缓存整个页面。而你不希望那样。”

我不完全明白我是否能够基于每个用户缓存我页面的某些部分。有人可以解释一下吗?

提前致谢!

最佳答案

您可以基于每个用户缓存部分页面。

它们的关键是清漆配置,您将共享的最大年龄设置为正常的 ttl,并且然后将为该用户缓存该 esi 请求。

然后看看这个Varnish cookbook caching for logged in users key 是您需要一个带有散列用户 ID 的唯一 cookie,并将示例中的 myapp_unique_user_id 替换为您的 cookie 名称。

这是一个示例 Controller ,其中包含缓存和非缓存操作。

<?php

namespace MyTest\Bundle\HomepageBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;

class TestController extends Controller
{
/**
* UnCached html content
*
* @Route("/test_cache", name="homepage")
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function homepageAction()
{
return $this->render('MyTestHomepageBundle::index.html.twig');
}

/**
* Cached user specific content
*
* @param integer $myTestUserId
*
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/test_user_cached/{myTestUserId}", name="homepage_user_specific_content")
*/
public function userSpecificContentAction($myTestUserId)
{
$response = $this->render('MyTestHomepageBundle::userSpecificContent.html.twig', array('userId' => $myTestUserId));
$response->setPublic();
$response->setSharedMaxAge(3600);

return $response;
}
}

这是你的index.html

<!DOCTYPE html>
<head></head>
<body>

<h1>My Test homepage - {{ "now"|date("F jS \\a\\t g:i:s") }}</h1>
{{ render_esi(url('homepage_user_specific_content')) }}
</body>

和 userSpecificContent.html.twig

UserId: {{ userId }}  - {{ "now"|date("F jS \\a\\t g:i:s") }}

关于caching - Symfony2 : Private ESI Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17926367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com