@Cache
编辑该页面@Cache
的@Cache
注释允许定义HTTP缓存头过期和验证。
HTTP过期策略
的@Cache
注释允许定义HTTP缓存:
- 注释
- 属性
1 2 3 4 5 6 7 8
使用Sensio赞助\包\FrameworkExtraBundle\配置\缓存;/ * * *@Cache(到期=“明天”,公共= true) * /公共函数指数(){}
1 2 3 4 5 6
使用Sensio赞助\包\FrameworkExtraBundle\配置\缓存;#(缓存(到期:“明天”,公众:真正的))公共函数指数(){}
您还可以使用一个类的注释定义缓存为所有操作的控制器:
- 注释
- 属性
1 2 3 4 5 6
/ * * *@Cache(到期=“明天”,公共= true) * /类BlogController扩展控制器{}
1 2 3 4
#(缓存(到期:“明天”,公众:真正的))类BlogController扩展控制器{}
当有冲突类配置和配置方法,后者覆盖前:
- 注释
- 属性
1 2 3 4 5 6 7 8 9 10 11 12
/ * * *@Cache(到期= "明天")* /类BlogController扩展控制器{/ * * *@Cache(到期= " + 2天”)* /公共函数指数(){}}
1 2 3 4 5 6 7 8
#(缓存(到期:“明天”))类BlogController扩展控制器{#(缓存(到期:+ 2天))公共函数指数(){}}
请注意
的到期
属性理解的PHP需要任何有效日期strtotime ()
函数。
HTTP验证策略
的lastModified
和Etag
属性管理HTTP验证缓存头。lastModified
添加一个last - modified
头来反应和Etag
增加了一个Etag
头。
都时自动触发逻辑来返回一个304响应响应不修改(在这种情况下,控制器不称):
- 注释
- 属性
1 2 3 4 5 6 7 8 9 10
使用Sensio赞助\包\FrameworkExtraBundle\配置\缓存;/ * * *@Cache(lastModified = " post.getUpdatedAt ()”,Etag = "“Post”~ post.getId () ~ post.getUpdatedAt () .getTimestamp ()) * /公共函数指数(文章美元帖子){/ /你的代码/ /不会叫,以防304}
1 2 3 4 5 6 7 8
使用Sensio赞助\包\FrameworkExtraBundle\配置\缓存;#(缓存(lastModified:“post.getUpdatedAt ()”, etag:““Post”~ post.getId () ~ post.getUpdatedAt () .getTimestamp ()))公共函数指数(文章美元帖子){/ /你的代码/ /不会叫,以防304}
它大体上是做同样的是下面的代码:
1 2 3 4 5 6 7 8 9 10
公共函数我的(请求美元请求,后美元帖子){美元响应=新反应();美元响应- >setLastModified (美元帖子- >getUpdatedAt ());如果(美元响应- >isNotModified (美元请求)){返回美元响应;}/ /你的代码}
请注意
Etag HTTP报头值的散列表达式的结果sha256
算法。
属性
这里是一个列表,接受属性和HTTP头相当于:
注释 | 反应方法 |
---|---|
@Cache(到期=“明天”) |
$响应- > setExpires () |
@Cache (smaxage = 15) |
$响应- > setSharedMaxAge () |
@Cache (maxage = 15) |
$响应- > setMaxAge () |
@Cache (maxstale = 15) |
$响应- >标题- > addCacheControlDirective (max-stale, 15) |
@Cache (staleWhileRevalidate = 15) |
$响应- >标题- > addCacheControlDirective (stale-while-revalidate, 15) |
@Cache (staleIfError = 15) |
$响应- >标题- > addCacheControlDirective (stale-if-error, 15) |
@Cache(不同={“饼干”}) |
$响应- > setVary () |
@Cache(公共= true) |
$响应- > setPublic () |
@Cache (lastModified = " post.getUpdatedAt ()”) |
$响应- > setLastModified () |
~ post.getUpdatedAt @Cache (Etag = " post.getId () () .getTimestamp ()) |
$响应- > setEtag () |
@Cache (mustRevalidate = true) |
$响应- >标题- > addCacheControlDirective (“must-revalidate”) |
请注意
smaxage
,maxage
和maxstale
属性也可以得到一个字符串相对时间格式(1天
,2周
,……)。
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。