第12章 缓存.docVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章 缓存

?? 第 12 章 缓存 有一种提高应用程序速度的方法存储生成的HTML代码片段,或者整个页面,以后直接使用存储的内容。这种技术叫做缓存,它可以在服务器端和客户端实现。 symfony提供了一个灵活的服务器端缓存系统。通过很直观的YAML文件设置,它可以保存整个回应一个动作一个局部模板或者一个模板片段的结果到一个文件里。 当对应的数据变化时,你可以很方便的使用命令行或者的动作方法有选择的清除缓存。symfony还提供了一个通过HTTP 1.1头信息控制客户端缓存的简单方法。本章将详细介绍这些内容,并且有一些监控缓存对程序性能影响的技巧。 缓存回应 HTML缓存的原理很简单:重用之前类似请求的部分或者全部HTML代码。这些HTML代码存储在一个特定的地方(symfony项目的cache/目录),前端控制器在执行动作之前会先检查这个目录。 如果找到缓存内容,就把它发送到客户端而不执行动作,因此大大加快了执行速度。如果没有缓存内容,就执行动作,然后把动作的结果(视图)保存在cache/目录供以后使用。 由于所有的页面都可能包含动态内容,所以HTML缓存默认是关闭的。网站管理员可以开启它来提高性能。 symfony能够三种不同类型的HTML缓存: 动作的缓存包含或者不包含布局 局部模板,组件或者组件槽的缓存 模板片段的缓存 前两种类型可以通过YAML配置文件来控制。模板片段的缓存是通过模板里的辅助函数来管理的。 全局缓存设置 项目的每个应用程序的不同环境,HTML缓存机制都可以在settings.yml文件里的cache部分设置成开启或者关闭(默认)。例12-1 是一个开启缓存的例子。 例 12-1 - 开启缓存, myapp/config/settings.yml dev: .settings: cache: on 缓存一个动作 显示静态内容的动作(不依赖数据库或者session无关的数据)或者从数据读取信息的动作(比如,GET请求),这类的动作通常比较适合作缓存。图12-1显示了不同情况下页面的哪些部分被缓存:动作结果(它的模板)或者动作结果与布局一起。 图 12-1 - 缓存动作 例如,有一个user/list动作,它返回网站所有用户的列表。除非有用户被修改增加或者删除(这种情况会在从缓存里移除内容这一小节里讨论),这个动作都会显示同样的内容,所以它非常适合作缓存。 可以在config/目录的cache.yml文件里设置各个动作的开启关闭。请看例12-2里的例子。 例 12-2 - 为一个动作开启缓存,myapp/modules/user/config/cache.yml list: enabled: on with_layout: false # 默认值 lifetime: 86400 # 默认值 这个配置里开启了list动作的缓存,布局不会与动作一起缓存(一起缓存是默认设置)。这就是说,即使这个动作已经被缓存了,布局(还有其中的局部模板与组件)还是会被执行。如果with_layout设置成true,那么布局就会与动作一起被缓存而不会再次执行。 测试缓存的设置,在你的浏览器里执行测试环境的这个动作。 /myapp_dev.php/user/list 你会注意到页面的动作区域的边框,第一次,这个区域有一个蓝色的头部,这说明它不是缓存的内容,刷新页面,动作区域有一个黄色的头部,这说明这是缓存的内容(并且速度提升明显)。在本章你会了解更多测试与检测缓存的方法。 NOTE 槽是模板的一部分,缓存动作的同时也会保存这个动作的模板里定义的槽的值。所以槽可以被缓存。 缓存系统也可以对有参数的页面起作用。假设user模块有一个show动作,它根据参数id显示一个用户的资料。修改cache.yml文件这个动作的缓存也打开,如例12-3所示。 为了更好地组织cache.yml文件,可以把一个模块的所有动作的设置放在all:键下,如例12-3里所示。 例 12-3 - 完整的cache.yml文件示例,myapp/modules/user/config/cache.yml list: enabled: on show: enabled: on all: with_layout: false # 默认值 lifetime: 86400 # 默认值 现在,每次用不同的id参数执行user/show动作会在缓存里新增一条记录。所以下面这个的缓存: /user/show/id/12 与的缓存不一样 /user/show/id/25 CAUTION 通过 POST方法调用的动作或者通过直接的GET参数(不通过symfony的路由系统

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档