Grav - 性能和缓存

在本章中,我们将了解 Grav 中的性能和缓存概念。

性能

术语"性能"是指系统性能,即它是否可以处理系统上的更高负载并修改系统以处理更高的负载。

考虑以下与 Grav 性能相关的要点 −

  • 为了获得更好的 Grav 性能,您可以使用 PHP opcacheusercache。opcache 与 PHP 5.4 配合良好,usercache 与 PHP 5.5、PHP 5.6 和 Zend opcache 配合使用速度更快。

  • 使用闪存且没有移动部件的 SSD(固态硬盘)。有时缓存会存储在用户缓存中或存储为文件。因此,SSD 驱动器可以提供更好的性能。

  • 虚拟机是云计算技术下托管提供商的最佳方式。您可以指定资源而无需与物理设备交互。本机托管比虚拟机更快。Grav 在虚拟机上运行得更好,但为了获得最佳性能,您可以使用本机托管选项。

  • Grav 具有更快的内存,其缓存使用大量内存,可为您的服务器提供更好的性能。与其他平台相比,它使用的内存更少。

  • Grav 在共享服务器上使用共享托管来共享内容。共享托管成本低廉,有时可能会导致服务器上的内容变慢。

  • 多核处理器用于更快地处理多个任务。高级处理器比这些处理器更好,可以帮助用户完成任务。

缓存

一般来说,缓存是存储在缓存内存中的数据。缓存机制使 Grav 速度更快,浏览器可以从缓存而不是原始服务器获取文件,从而节省时间和额外的网络流量。

Grav 使用 Doctrine Cache 库,该库支持以下 −

  • 自动(默认) − 它自动使用默认选项。

  • 文件 −它指定 cache/ 文件夹中的缓存文件。

  • APC

  • XCache

  • Memcache

  • Redis

  • WinCache

默认情况下,Grav 使用自动设置。它会尝试 APC,然后是 WinCache、XCache,最后使用 File。

缓存类型

有 5 种类型的缓存 −

  • YAML 配置缓存到 PHP。

  • 页面对象的核心 Grav 缓存。

  • 模板文件作为 PHP 类的 Twig 缓存。

  • 媒体资源的图像缓存。

  • 使用流水线对 CSS 和 jQuery 进行资产缓存。

YAML 配置的缓存存储在 /cache 文件夹中。图像缓存将其图像存储在 /images 文件夹中。核心 Grav 缓存的配置选项存储在 user/config/system.yml 文件中,如下所示 −

cache:
   enabled: true
   check:
      method: file
   driver: auto
   prefix: 'g'
  • enabled 选项设置为 true 即可启用缓存。

  • method 选项检查文件或文件夹等页面中的更新。

  • driver 选项指定不同类型的缓存选项,例如 Auto、File、APC、XCache、Memcache、Redis 或 WinCache。

  • prefix 选项定义缓存前缀字符串。

Memcache 选项

如果您使用的是 memcached 服务器,则需要使用 user/config/system.yml 文件中的 memcache 驱动程序添加一些额外的配置选项。这些选项可以在 cache: 组下定义。

cache:
...
...
   memcache:
      server:localhost
      port: 8080

Redis 选项

如果您使用的是 redis,则需要在 user/config/system.yml 文件 中使用 redis 驱动程序添加一些额外的配置选项。这些选项可以在 cache: 组下定义。

cache:
...
...
   redis:
   	server:localhost
      port: 8080

Twig 模板通过在 user/config/system.yml 文件中使用 twig 驱动程序来使用其自己的缓存机制。

twig:
   cache: true
   debug: true
   auto_reload: true
   autoescape: false

它有一些选项,例如 −

  • cache 选项通过将其设置为 true 来启用 twig 缓存。

  • debug 选项启用 twig 调试。

  • auto_reload 选项用于通过将其设置为 true 来重新加载更改。

  • autoescape 选项用于自动转义 twig 变量。

缓存和事件

启用缓存时可以使用事件。除 OnPageContentRawOnPageProcessedOnPageContentProcessedOnTwigPageVariablesOnFolderProcessed 事件外,所有事件均可启用此功能。这些事件可用于所有页面和文件夹,并且只能在事件处理时运行。页面缓存后无法运行这些事件。