HTTP缓存
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.0,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
HTTP缓存
丰富的web应用程序的本质意味着他们的动态。无论多么高效的应用程序,每个请求总是含有更多的开销比静态文件。通常,这很好。但是当你需要你的请求闪电快,你需要HTTP缓存。
缓存在巨人的肩膀上
HTTP缓存,缓存页面的完整输出(响应),绕过您的应用程序完全在后续请求中。当然,缓存整个反应并不总是可能的高度动态的网站,还是?与边边包括(ESI)上,您可以使用HTTP缓存的力量片段你的网站。
Symfob娱乐下载ony缓存系统是不同的,因为它依赖于简单和HTTP缓存中定义的HTTP规范。而不是重新缓存方法,Symfony拥抱的标准定义了基本的沟通在网上。ob娱乐下载一旦你理解了基本的HTTP验证和过期的缓存模型,你会准备主Symfony缓存系统。ob娱乐下载
由于与HTTP缓存并不是唯一的Symfony,很多文章已经存在的主题。ob娱乐下载如果你是新到HTTP缓存,瑞安Tomayko一起合作编写的文章缓存做的事情是高度推荐。另一个深入的资源是马克诺丁汉的缓存教程。
网关缓存的缓存
与HTTP缓存时,缓存应用程序完全分开,应用程序和客户端之间的请求。
缓存的工作是接受来自客户端的请求并将其传递回您的应用程序。缓存还将接收响应从您的应用程序和转发到客户端。缓存是“中间人”的请求-响应客户端和应用程序之间的通信。
一路上,缓存将存储每个响应,被认为是“缓存”HTTP缓存)。请求相同的资源时,缓存将缓存的响应发送到客户端,完全无视您的应用程序。
这种类型的缓存被称为HTTP网关缓存和许多存在等清漆,乌贼在反向代理模式Symfony反向代ob娱乐下载理。
提示
网关缓存有时也被称为反向代理缓存,代理缓存,甚至HTTP加速器。
ob娱乐下载Symfony反向代理
ob娱乐下载Symfony附带了一个反向代理用PHP编写的(即网关缓存)。平台反向代理缓存,它不是一个像清漆,但是是一个伟大的方式开始。
提示
有关设置清漆,明白了如何使用清漆加快我的网站吗。
启用代理很容易:每个应用程序附带了一个缓存内核(AppCache
)包装默认一个(AppKernel
)。内核缓存是反向代理。
要启用缓存,你的前端控制器修改代码。你也可以做出这些改变app_dev.php
添加缓存dev
环境:
1 2 3 4 5 6 7 8 9 10 11 12 13
/ /网络/ app.php使用ob娱乐下载\组件\HttpFoundation\请求;/ /……美元内核=新AppKernel (“刺激”,假);美元内核- >loadClassCache ();/ /添加(或取消)这个新行!/ /包的默认AppKernel AppCache美元内核=新AppCache (美元内核);美元请求=请求::createFromGlobals ();/ /……
内核将立即作为反向代理缓存:缓存响应从你的应用程序并返回给客户机。
谨慎
如果你使用framework.http_method_override选择阅读的HTTP方法_method
参数,参见上面的链接,你需要做出调整。
提示
内核有一个特殊的缓存getLog ()
方法返回的字符串表示发生在缓存层。在开发环境中,用它来调试和验证您的缓存策略:
1
error_log (美元内核- >getLog ());
的AppCache
对象有一个合理的缺省配置,但它可以通过一组精细选项可以设置通过重写getOptions ()方法:
1 2 3 4 5 6 7 8 9 10 11 12 13
/ / app / AppCache.php使用ob娱乐下载\包\FrameworkBundle\HttpCache\HttpCache;类AppCache扩展HttpCache{受保护的函数getOptions(){返回数组(“default_ttl”= >0,/ /……);}}
选项的完整列表和他们的意义,看到了HttpCache: __construct()的欧宝官网下载app文档。
当你在调试模式(因为你的引导调试
内核,像在app_dev.php
或你手动设置调试
选项为true), Symfonyob娱乐下载会自动添加一个X-ob娱乐下载Symfony-Cache
头来响应。使用这个信息缓存命中率和未命中率。
改变从一个反向代理到另一个
Symfob娱乐下载ony反向代理是一个伟大的工具开发你的网站或者当您部署时使用你的网站到一个共享的主机,你不能安装任何超出的PHP代码。但是是用PHP编写的,它不能以最快的速度用C编写的一个代理。
幸运的是,由于所有反向代理实际上是一样的,你应该能够切换到更健壮的——就像清漆一样——没有任何问题。看到如何使用清漆
让你的响应HTTP缓存
一旦你添加了一个反向代理缓存(例如像Symfony反向代理或清漆),你准备缓存响应。ob娱乐下载要做到这一点,你需要沟通你的缓存哪一个响应缓存和多长时间。这是通过设置HTTP缓存响应标头。
HTTP指定四个响应缓存头,你可以设置为启用高速缓存:
cache - control
到期
ETag
last - modified
这四个标题是用来帮助你缓存响应通过两个不同的模型:
读取HTTP规范
所有的HTTP头你会读到不Symfony发明的!ob娱乐下载他们使用的HTTP规范的一部分网站在互联网。深入挖掘HTTP缓存,查看原始RFC 2616文档,或者这两个其他作品:P4 -条件要求和P6 -缓存:浏览器和中介缓存。
作为web开发人员,您是强烈敦促阅读规范。其清晰度和权力——甚至超过15年前成立,是非常宝贵的。不要推脱的规范,其内容的外观更美丽的比封面!
过期的缓存
的简单的缓存响应的缓存方式为一个特定的时间:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src / AppBundle /控制器/ BlogController.php使用ob娱乐下载\组件\HttpFoundation\响应;/ /……公共函数indexAction(){/ /创建一个响应对象,通过呈现模板美元响应=美元这- >呈现(“博客/ index.html.twig”[]);/ /缓存3600秒美元响应- >setSharedMaxAge (3600年);/ /(可选)设置一个定制的cache - control指令美元响应- >头- >addCacheControlDirective (“must-revalidate”,真正的);返回美元响应;}
多亏了这个新代码,你的HTTP响应会有以下标题:
1
cache - control:公共,must-revalidate s-maxage = 3600
这告诉你的HTTP反向代理缓存该反应为3600秒。如果任何人再次请求这个URL前3600秒,您的应用程序不会受到打击。如果你使用Symfony的反向代理,看看ob娱乐下载X-ob娱乐下载Symfony-Cache
标题关于缓存命中率和未命中率的调试信息。
提示
请求的URI作为缓存键(除非你不同)。
这是超级性能和易于使用。但是,缓存失效不支持。如果你的内容改变,你需要等到你的缓存过期页面更新。
提示
事实上,你可以手动缓存失效,但它不是HTTP缓存规范。看到的一部分缓存失效。
如果您需要设置缓存头为许多不同的控制器操作,查看FOSHttpCacheBundle。它提供了一种方法来定义缓存头根据请求URL模式和其他属性。
最后,对于更多信息过期缓存,明白了HTTP缓存过期。
验证缓存
用过期的缓存,你简单地说“缓存3600秒!”。但是,当有人更新缓存的内容,你才发现你网站上的内容缓存到期。
如果你需要看更新后的内容立即,你需要无效你的缓存或使用验证缓存模型。
有关详细信息,请参见HTTP缓存验证。
安全的方法:只缓存获取或HEAD请求
HTTP缓存只适用于“安全”的HTTP方法(比如GET和HEAD)。这意味着两件事:
- 不要缓存PUT、POST或删除请求。它不会工作,并有很好的理由。这些方法是变异时使用您的应用程序的状态(例如删除博客)。缓存会阻止某些请求和变异的应用程序。
- 你应该从来没有改变您的应用程序的状态(例如更新博客)当响应GET或请求。如果这些请求缓存,未来可能没有出现在你的服务器的请求。
更反应的方法
响应缓存相关类提供了更多的方法。这里是最有用的:
1 2 3 4 5
/ /标志着陈旧的响应美元响应- >到期();/ /力响应返回一个合适的304响应没有内容美元响应- >setNotModified ();
此外,大多数可以通过设置缓存相关的HTTP头单身setCache ()方法:
1 2 3 4 5 6 7 8 9
/ /设置缓存设置在一个电话美元响应- >setCache (数组(“etag”= >美元etag,“last_modified”= >美元日期,“max_age”= >10,“s_maxage”= >10,“公共”= >真正的,/ /“私人”= >真的,));
总结
ob娱乐下载Symfony旨在遵循证明规则:HTTP。缓存也不例外。掌握Symfony缓存系统意ob娱乐下载味着熟悉HTTP缓存模型和有效地使用它们。这意味着,而不是仅仅依靠Symfony的文档和代码示例,您可以访问世界的知识与HTTP缓ob娱乐下载存和清漆等网关缓欧宝官网下载app存。