高级聚合

hrs 提交于 2019/08/01 - 16:06 , 周四

内容

核心特点和好处

  • Drupal 8的AdvAgg与Drupal 7有一些显着的不同; AdvAgg不是完全重写资产处理,而是仅应用一些改进。这主要是因为核心处理要好得多。它与更多其他模块(如http2_server_push)的兼容性也更好。

  • Url查询字符串以关闭该请求的AdvAgg。如果用户具有“绕过高级聚合”权限,将关闭文件优化。将完全绕过所有Advanced CSS / JS Aggregations模块和子模块。如果当前已禁用高级CSS / JS聚合,则将启用它。?advagg=0?advagg=-1?advagg=1

  • 管理页面上的按钮用于删除将关闭文件优化的cookie。对主题开发很有用。

  • Gzip支持。所有优化文件都可以预先压缩为.gz文件,并从服务器提供。这比在每个请求上压缩文件更快。

  • Brotli支持。所有优化文件都可以使用较新的brotli压缩算法进行预压缩; 这通常表明文件大小比gzip提高了近30%。需要安装brotli php扩展。

  • 通过各种子模块,可以实现通过缩小资产和其他技术而显着改善的前端性能。阅读更多内容。

SUBMODULE概述

AdvAgg附带了很多子模块来完成各种任务。大多数都与绝大多数其他mod兼容,但有些可能会有冲突。如果是这样的话,请在此处注明,并在模块的完整注释中提供更多详细信息。

AdvAgg Cdn(advagg_cdn)

此模块可能存在冲突,但仅限于其他CDN类型模块。

从公共CDN加载CSS或JavaScript库; 目前只支持谷歌或微软的CDN的jQuery和jQuery UI。

AdvAgg CSS / JS Validator(advagg_validator)

通过几个不同的验证器验证您站点中的CSS和/或JS文件。

AdvAgg外部缩小器(advagg_ext_minify)

使用可配置的命令行通过其他不受支持的方法缩小CSS或JS。

AdvAgg Minify CSS(advagg_css_minify)

使用第三方缩小器缩小CSS文件; 目前支持YUI(包含)或Core缩小算法。

AdvAgg Minify JS(advagg_js_minify)

使用第三方缩小器压缩编译的JavaScript文件; 内置支持一些minifiers。

AdvAgg修饰符(advagg_mod):

根据应用的调整,此模块可能会导致与其他模块的兼容性问题。

包括可能不适用于所有站点的其他调整,例如: - 强制对所有CSS / JS进行预处理。 - 将延迟标签添加到所有JS。- 使用和JavaScript Polyfill 推迟CSS加载。 - 将async标记添加到所有或仅本地JavaScript。rel=preload

AdvAgg旧IE兼容性增强器(advagg_old_ie_compatibility)

如果启用此模块,则可能与其他模块发生冲突。

包括其他功能,以提高Drupal与旧版Internet Explorer(6-9)的兼容性。

组态

设置页面位于:。admin/config/development/performance/advagg

全球选择

  • 启用高级聚合:您可以通过取消选中此选项来快速暂时禁用所有AdvAgg功能。出于测试目的,另请参阅测试AdvAgg。[默认值:启用]

  • 对外部CSS / JS使用DNS预取:如果启用,则在html顶部附近放置预取标记,以便在加载时尽快触发DNS查找。[默认值:已禁用]

  • 服务器配置: AdvAgg的服务器配置选项。主要仅在Apache服务器上可用。欲了解更多详情,请参见服务器设置

  • 包含Cache-Control:在生成的.htaccess文件中不可变。 Apache仅在.htaccess中包含指令,以便为所有优化文件发送Cache-Control Immutable标头。仅在Edge 15+和Firefox 49+上受支持。在其他浏览器中,它们没有任何效果,因此可以安全地启用。[默认值:启用]

  • AdvAgg缓存设置:开发将扫描所有文件,以便在每次加载页面时进行更改。所有用例都可以正常使用。几乎在所有用例中都应该很好。[默认值:正常]

压缩选项

  • Gzip [CSS / JS]资产:如果启用,AdvAgg将为生成的每个文件创建gzip压缩版本。如果用户的浏览器支持它而不是未压缩文件节省时间和带宽,则将提供此服务。[默认值:启用]

  • Brotli Compress [CSS / JS]资产:仅在安装了非标准PHP brotli扩展时才可选。如果启用,Advagg将为生成的每个文件创建brotli压缩版本。压缩比比Gzip好,但服务器和浏览器支持较低。[默认值:已禁用]

CSS选项

  • 使用媒体查询组合CSS文件:如果启用,AdvAgg将向任何需要它的文件添加媒体查询包装,以便聚合更有效。[默认值:已禁用]

  • 修复不正确的设置类型:如果type是外部但不以http,https或//开头,则将其更改为类型文件。如果type是file,但它以http,https或//将type更改为外部。[默认值:启用]

JS选项

  • 修复不正确的设置类型:如果type是外部但不以http,https或//开头,则将其更改为类型文件。如果type是file,但它以http,https或//将type更改为外部。[默认值:启用]

  • 如果在同一主机上,请不要将外部更改为文件:在极少数情况下,JS文件可能位于同一主机上,但实际上仍然是外部的,例如通过CDN提供。[默认值:已禁用]

CRON选项

除非你对你想要做的事情有一个很好的理解,否则最好还是留下这些。为了获得最佳性能,设置外部cron任务比依靠Drupal内置的“穷人的cron”更好。

  • 运行之间的最短时间:advagg_cron()设置运行之间的最短时间advagg_cronadvagg_cron每当你的网站cron运行时,如果小于最小时间,将在进一步处理之前返回。[默认值:1天]

  • 删除超过设定时间之前修改的聚合:设置保留生成文件的时间。更长时间将具有更高的性能,并且AdvAgg 8.x-3.x应该没有否定,除了可能浪费的磁盘空间来自很少使用或更改的文件。[默认:1个月]

模糊选项

  • 将绝对路径转换为协议相对路径:仅适用于外部文件,这将更改任何基于http://或https://的URL以使用//。[默认值:启用]

  • 将http://转换为https://:也仅适用于外部文件,并且与将绝对路径转换为协议相对路径互不兼容。[默认值:已禁用]

  • 使用“Options + SymLinksIfOwnerMatch”:在一些罕见的主机配置中,AdvAgg htaccess文件需要使用而不是更常见的。[默认值:已禁用]Options +SymLinksIfOwnerMatchOptions +FollowSymlinks

信息页面

位于。该页面提供调试信息。这里没有配置选项。admin/config/development/performance/advagg/info

  • 挂钩主题信息:显示preprocess_html订单。

  • 核心资产挂钩由模块实现:列出实现各种核心资产挂钩功能的模块。注意:如果一个模块不使用这些,但是正在使用除添加/删除之外的资产进行更改,则可能与AdvAgg发生冲突的可能性更大,尤其是某些子模块。

  • 获取有关优化文件的信息:输入优化文件的名称,并获取有关该文件的信息数组,包括其原始名称和位置。

操作页面

位于。这是一组用于控制缓存和管理此模块测试的命令。通常,在解决某些聚合问题时,此页面非常有用。admin/config/development/performance/advagg/operations

  • 聚合绕过Cookie:切换当前浏览器的“聚合旁路Cookie”。如果启用,将在指定的时间段内为用户禁用AdvAgg。它的作用几乎与向每个URL添加?advagg = 0相同。

  • Cron维护任务:删除所有过时文件:扫描css / js优化目录中的所有文件并删除旧文件。另请参见Cron Options配置页面。

严厉的措施

  • 清除所有缓存:删除存储在advagg缓存中的所有数据,并删除所有优化文件。

  • 增量全局计数器:通过递增全局计数器强制使用新名称创建所有新文件。

使用Advanced Aggregates开发您的站点

使用新架构,Advanced Aggregates在开发时更加智能。它会检测更改的文件,但是,根据设置,它可能不是即时的。此外,在执行样式表或JavaScript时,为每个次要更改重复优化文件不是最有效的选项。所以,你可以做什么?如果只有一个站点实例(有问题但预算等),您可能只想调整配置以更快地刷新缓存或在进行大量开发时暂时禁用AdvAgg。

这样可行但是,还有一些其他方法可以更好地用于某些工作流程,尤其是在进行配置导入和导出时。

暂时禁用AdvAgg

  1. 通过settings.local.php。开发人员通常会使用配置覆盖禁用核心资产聚合,或启用各种核心开发功能。你也可以这样做来禁用AdvAgg。例如,某些用户使用以下行:

    // Disable Core CSS and JS aggregation. $config['system.performance']['css']['preprocess'] = FALSE; $config['system.performance']['js']['preprocess'] = FALSE; // Disable AdvAgg. $config['advagg.settings']['enabled'] = FALSE;

  2. 通过主配置页面,取消选中Enable Advanced Aggregates。这将立即对所有用户生效。

  3. 通过AdvAgg url参数。根据各种系统缓存不太可靠。要使用,只需附加到您的网址。?advagg=0

  4. 使用Operations页面中的浏览器cookie功能。与url参数类似,这不如前2个选项好。

服务器设置

AdvAgg可以调整配置以提高Apache服务器的性能。它通过.htaccess文件来实现。有理由不使用.htaccess,但对于大多数网站来说,这不是一个重要问题,因为它是一个性能微调问题。但是对于非Apache服务器,.htaccess文件不起作用,在Nginx的情况下,没有等效的。相反,Nginx在服务器/ vhost定义中具有所有这样的配置。

因此,如果您正在使用Nginx,请阅读有关将这些添加到您的vhost或服务器设置的说明。以下所有代码段都在配置文件的块中。server { }

缓存控制不可变

一成不变的缓存控制头是一个相当新的头。截至2017年9月,只有Firefox和Edge 支持它。不支持它的浏览器将被忽略,因此启用它是安全的。

要在nginx中启用,请在服务器配置中添加以下内容:

location ~ ^/sites/.*/files/(css|js)/optimized { add_header Cache-Control 'public, max-age=31536000, immutable'; }

如果您希望这也适用于agreggates以及各个AdvAgg优化文件,只需optimized从位置行中删除它。

提供压缩资产。

在Apache上,AdvaAgg处理得非常好。但是,在其他服务器上,如果您已经将服务器配置为从Drupal核心提供压缩资产,则可能它只是起作用。另一方面,许多Nginx默认配置可能无法设置为提供静态压缩资产。

Brotli

此时,服务Brotli资产仍然需要您使用Nginx Brotli模块从源代码构建您的Nginx服务器- 可行,但超出了本手册的范围。安装完成后,配置vhost / server设置非常简单,只需添加以下内容:

location ~ ^/sites/.*/files/(css|js) { brotli_static on; }

Gzip已

服务Gzip资产还需要启用一个单独的模块,它是主要nginx代码的一部分,并且有它的发行版 - 例如在Ubuntu上用于安装预构建版本,否则你可以构建自己的自定义版本。查看有关Nginx GZip模块的更多详细信息配置服务器设置与Brotli配置同样简单且几乎相同:apt-get install nginx-extras

location ~ ^/sites/.*/files/(css|js) { gzip_static on; }

如果你想根据用户的浏览器提供Gzip或Brotli,只需使用两个声明:vhost / server settings非常简单,只需添加以下内容:

location ~ ^/sites/.*/files/(css|js) { brotli_static on; gzip_static on; }

提示与技巧

JavaScript Bookmarklet

您可以使用此JS代码作为切换AdvAgg URL参数的书签。有关详细信息,请参见http://en.wikipedia.org/wiki/Bookmarklet

javascript:(function(){ var loc = document.location.href, qs = document.location.search, regex_off = /\&?advagg=-1/, goto = loc; if(qs.match(regex_off)) { goto = loc.replace(regex_off, ''); } else { qs = qs ? qs + '&advagg=-1' : '?advagg=-1'; goto = document.location.pathname + qs; } window.location = goto; })();

如何获得高分数的分数

转到- 选中“使用媒体查询合并CSS文件”admin/config/development/performance/advagg

确保启用了AdvAgg修改器,然后转到- 在“将JS移动到页脚”下选择“全部” - 设置“在所有JS / CSS上启用预处理” - 设置“将drupal_add_html_head()添加的动态移入drupal_add_js()” - 启用每个“优化JavaScript / CSS订购”下的复选框admin/config/development/performance/advagg/mod

确保启用AdvAgg Minify JS并转到- 如果可用,选择JSMin; 否则选择JSMin +admin/config/development/performance/advagg/js-minify

标签