20. 渲染上下文RenderContext、渲染器renderer

当drupal的控制器返回渲染数组的时候,系统会派发视图事件,渲染数组被main_content_view_subscriber(主内容视图订阅器)处理,它根据请求的格式,将系统流程定向到对应的格式渲染器,系统默认提供了四个格式渲染器,他们被定义在容器的main_content_renderers参数里面,其中html格式对应的是服务id为“main_content_renderer.htm

16. 网站维护模式

当drupal8的网站需要升级、导入内容、备份、更改内容类型等等会影响访问用户的时候需要开启维护模式,操作路径是:管理-配置-开发-维护模式
开启维护模式并输入提示内容即可,在提示内容中@site可以代表当前站点的名称,除此外没有其他变量
那么维护模式是怎么实现的呢?这就是本篇的主题:

13. 核心处理流程HttpKernel(Drupal执行流程)

有朋友问云客drupal8源码分析系列文章有顺序规律吗?我的回答是有!从第一篇开始以来她是按照drupal的执行流程分主题进行的,除前言外,已经发布12篇了,如果你是跟着drupal8的执行流程进行研究学习的,那么这些文章就像站在路旁等着你的引路人为你揭开一些迷惑的问题,drupal很大,前方很远,有时候你可能感觉站在一望无际的平原,眼前只有遥远天际的落日昏辉,希望这些引路人让走在这条路上的

11. 数据库系统及其使用

Symfony没有数据库组件,drupal8完全自己实现了一个基于php的pdo扩展的数据库系统,它提供了一个数据库抽象层,让你可以使用统一的方式去操作数据库,而不用管底层使用的是什么数据库,只需要使用好它提供的接口(对象方法或函数)就行,当需要更换另外类型的数据库时,比如由MySQL换成Oracle或MS SQL Server,无需修改应用层代码

10. Session进阶

在本系列之前写过《Session系统》,但那部分仅仅讲到了drupal8会话的基础:Symfony的Session组件

至于drupal怎么去使用这个基础就是本主题的内容,本主题是延续篇,将讲述drupal8的全部Session知识

请先看上篇,再继续

8. 页面缓存PageCache的请求策略RequestPolicy及响应策略ResponsePolicy

在drupal8中提供了两个页面缓存模块,一个是PageCache用于匿名访问时,一个是dynamic_page_cache用于处理任意用户的页面缓存,后者进一步运用缓存能力。他们都有对应的请求策略及响应策略。

那么这两种策略如何运作?作用是什么呢?请看下面

先讲讲用于匿名用户的页面缓存PageCache的请求响应策略:

7. 缓存系统Cache

在介绍drupal8的缓存系统前我们先了解一下缓存系统的本质及特性,缓存的存在依赖于两个目的:节省资源和提高速度,起不到这两作用则缓存没有存在的必要,当一个结果需要进行大量计算才能得到,而它又不会频繁更新那么缓存结果可以节省大量算力,缓存的是一个结果,这个结果可以存放在多台服务器上面实现负载均衡,从而进一步提高访问速度,在高访问网站中缓存非常重要,drupal8的缓存设计也是围绕这两个目的而

6. HttpKernel堆栈

HttpKernel为何物?从名字可以看出它就是处理http请求的核心,只需要把请求对象传给它,就返回响应对象,一次http访问大体上就算完成了(为什么说是大体上,在实际应用中发送完响应还会做一些类似于析构函数工作的事情),为规范统一HttpKernel的使用symfony为此定义了HttpKernel接口,位于\vendor\symfony\http-kernel\HttpKernelIn