Symfony检查捕获是否正常

时间:2016-01-27 14:46:32

标签: php symfony caching

好的我已经使用Symfony开发了一个简单的API来学习框架。既然API已经完成并且有效,我想添加一些缓存来增强性能并了解它是如何在Symfony框架环境中完成的。

我发现了这个:Cache Symfony

所以我在我的IndexController上添加了Cache注释,如下所示:

var copy = function(propertiesUsedOnFirst) {

    return Ti.UI.createView(propertiesUsedOnFirst);
};

我不明白的是我怎么能检查这是否真的有效我查看了只有dev子文件夹的缓存文件夹但是没有任何内容被调整到IndexController。也许有办法通过分析器检查它或者也许更好地为Symfony使用不同的缓存工具。

好的,现在我明白我使用的注释Cache是​​用于前端捕获:

/**
 * @Cache(expires="+5 minutes", public=true)
 */
class IndexController
{
    /**
     * @var CreateBookFactory
     */
    public $create;

    /**
     * @param CreateBookFactory $createBookFactory
     */
    public function __construct(
        CreateBookFactory $createBookFactory,
    ){
        $this->create = $createBookFactory;
    }

    /**
     * @param Request $request
     * @return JsonResponse
     */
    public function createAction(Request $request)
    {
        return new JsonResponse($this->create->build($request));
    }
}

2 个答案:

答案 0 :(得分:2)

@Cache中的SensioFrameworkExtraBundle注释实际上并不缓存内容。相反,它会根据您提供的注释将HTTP缓存过期标头添加到响应中。当客户端的Last-Modified和/或ETag标头与注释中提供的标头匹配时,它还可以避免调用您的控制器in some cases

如果要实际实现数据的服务器端缓存,则必须自己实现,或者使用提供该功能的其他包。

答案 1 :(得分:1)

symfony缓存和应用缓存不一样。它更多的是关于浏览器的标题。如果要测试它,请检查将哪些标头发送到浏览器。查看注释,它可能会发送标题Expires

您需要了解前端和后端缓存之间的区别。

前端缓存主要适用于GET请求还有基于ESI的更高级缓存技术和Varnish它可以显着加快您的网站速度。

你问了工具。我推荐Friends Of Symfony Cache Bundle

对于后端缓存,我建议memcache(非常容易缓存)用于基本缓存,redis用于更高级缓存。