75. 主题初始化器 在主题处理器一节提到了主题扩展对象(\Drupal\Core\Extension\Extension),该对象包含了一个主题的全部信息,但仅仅是该主题的信息,在系统中许多地方实际使用的是更高层次的活动主题对象(见下),她包含前者所有信息,还处理库覆写、库继承等主题与主题间相互影响的内容,该对象就是在主题初始化器中产生的,同时主题初始化器还负责加载主题主扩展文件等工作
74. 主题协商theme negotiator drupal主题系统十分灵活,你可以全站使用一套主题,用响应式设计去兼容移动端和pc端,如果响应式无法满足要求,你可以在各端分别使用不同的主题,但其灵活性远不止如此,实际上在同一个站点中你可以根据任意条件使用不同的主题,系统后台设定的只是默认值而已,比如在pc端或移动端你可以为不同语言采用不同主题
73. 主题处理器theme_handler 主题处理器theme_handler与主题管理器theme.manager都是系统提供的服务,虽然一字之差但她们功能完全不同,主题管理器用于主题渲染和派发主题修改钩子,而主题处理器完成更为底层的工作,向上为主题管理器、初始化器等各主题相关组件提供基础功能支持
72. 资源库assets library详解 让我们从css说起,在小型网站中css文件比较简单,开发和维护容易,但大型项目则不同,可能会有数万行,开发人员众多,他们需要协同,随着项目进化还经常需要修改,这就对css开发提出了一些要求,比如: 可预见Predictable:比如其他开发者用了已定义的一个class就应该可以看见该class带来的效果 可重用Reusable:有些样式不必反复定义
71. 主题引述 从本主题开始,云客源码分析系列将连续讲解drupal主题相关内容,主要读者定位为drupal开发人员,以及想深入理解主题系统的前端人员,讲述系统是如何处理主题的,尽量兼顾到不会php的主题开发人员,提供许多要点知识,使他们读后更加深入的理解主题,对一些概念和用法有精确的掌握,由于这样的定位,将少讲解主题开发的入门知识,这方面的中文文章资料有很多,官方也较系统的进行了介绍,你应该先行查阅,如果
70. 内部动态页面缓存dynamic_page_cache 内部页面缓存Internal Page Cache,服务id:http_middleware.page_cache,可以视为匿名用户缓存(对登录用户不起作用),相比内部动态页面缓存(本主题内容),她在更早的http处理核心堆栈中执行,见本系列《HttpKernel堆栈》主题,匿名用户缓存处理的缓存比较简单,但匿名访问的请求量往往很大,它采用网址和请求格式做缓存id,因此没有反映出缓存上下文的特性,丢掉了许多缓存变体,而内部动态页面缓存则弥补了这一点
69. 日志系统与监控 系统日志让你了解系统内部发生了什么,当出现故障时首先想到的就是日志,drupal日志系统可以按信息类别分别记录日志,并且按照RFC 5424和PSR-3将各类信息按紧迫程度划分为8个级别,这样方便筛选查看
68. 锁lock服务 我们知道web服务器是并发访问的,php脚本被不同的线程或进程执行,他们可能真正的同时执行,现在假设有个操作(比如计划任务)在系统中只能被执行一次,由于这种并发性就可能出现问题,两个同时执行的请求可能带来两次执行,为了解决这个问题我们就需要“锁LOCK”了