syrp-nz/silverstripe-cloudlfare-purger

一个简单的 Silverstripe 插件,用于在保存时自动从 CloudFlare 中清除页面。

安装: 107

依赖: 0

建议: 0

安全: 0

星级: 4

关注者: 2

分支: 1

开放问题: 1

类型:silverstripe-module

0.1.0 2016-09-26 23:59 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:20:11 UTC


README

一个简单的 Silverstripe 插件,用于在发布或保存页面或相关数据对象时自动从 Cloudflare 中清除页面。

要求

jamesryanbell/cloudflare: ^1.7
silverstripe/cms: ^3.1

注意:该插件已在 Silverstripe 3.4 上进行测试,但尚未对所有版本的 Silverstripe 3.x 进行彻底测试。理论上,它应该与 Silverstripe 3 的所有子版本兼容。如果您在使用较旧版本的 Silverstripe 3 时遇到问题,请记录问题或发起 PR,我将进行调查。

安装

composer require syrp-nz/silverstripe-cloudlfare-purger "^0.0"

配置 CloudFlare 以缓存您的网页内容

此插件不会自动配置 SilverStripe 或 CloudFlare 以自动缓存您的网页内容。

在安装插件之前,您需要配置您的 SilverStripe 网站以便与 CloudFlare 协同工作。

配置 CloudFlare 以缓存 SilverStripe 页面

配置插件

此插件可以通过 YML 文件或通过网站配置页面进行配置。YML 配置将优先于网站配置。您可以根据需要结合使用这两种配置。

以下配置选项可用

  • 电子邮件,应该是您的 Cloudflare 账户的电子邮件地址。
  • AuthKey,这是您的 Cloudflare 账户的 AuthKey(可以在 我的设置 > API 密钥 下获得)。
  • ZoneIdentifier,这是您的网站域名所属区域的数字标识符。在没有使用 API 的情况下,在 Cloudflare 中检索这个标识符没有简单的方法。它将出现在您的网站配置页面上的用户友好下拉菜单中。
  • Paths,应该是可以访问您网站的一组绝对路径。如果您的网站只在一个路径下可用,您可以留空此值。
  • HideSiteConfig 是一个可选的布尔值,您可以定义,如果您想通过 YML 文件配置所有 Cloudflare 设置。将此值设置为 true 将隐藏您的网站配置中的 Cloudflare 选项卡。

示例 YML 文件

CloudflarePurger:
  Email: you@example.com
  AuthKey: yourhexadecimalauthkey
  ZoneIdentifier: yourhexadecimalzoneid
  HideSiteConfig: true
  Paths:
  - "https://example.com/"
  - "http://example.com/"
  - "https://www.example.com/"
  - "http://www.example.com/"

使用网站配置

您可以在网站配置页面中定义所有参数,而无需编辑任何 YML 文件。

如果通过 YML 文件定义了某些值,并且未定义 HideSiteConfig 标志,则这些值将作为只读字段出现在您的网站配置中。

如果您担心您的 AuthKey 密钥在网站配置中可见,请确保将 HideSiteConfig 标志设置为 true。

插件的工作原理

插件定义了一个 CloudflarePurgerExtension 数据扩展。此扩展可以应用于任何数据对象类。它将自动应用于 SiteTree 类。

如果数据对象支持版本控制,则在发布时将调用 Cloudflare API 尝试清除与该对象关联的 URL。如果数据对象不支持版本控制,则在每次写入后都会发生清除调用。

数据对象可以公开一个 CloudflarePurgeLinks() 方法,以指定应清除哪些 URL。此方法可以返回单个 URL 或 URL 数组。URL 应相对于网站根目录。

否则,将调用数据对象的 Link() 方法。

插件还尝试检测您的网站导航是否发生变化。网站导航更改将导致您的整个 CloudFlare 区域被清除。

CloudflarePurgerExtension应用于数据对象

如果您有一个依赖于子数据对象内容的页面类型,或者您的数据对象可以通过其自己的URL访问,您应该在此数据对象上实现CloudflarePurgerExtension

您可以通过YML文件来实现。

PromoDataObject:
  extensions:
    - CloudflarePurgerExtension

以下是当PromoDataObject保存时如何自定义要清理的URL的示例。

class PromoDataObject extends DataObject {

    private static $db = [
        'SomeContent' => 'HTMLText'
    ];

    private static $has_one = [
        'Parent' => 'PromoHolderPage'
    ];

    public function Link()
    {
        // This DO can be accessed as a sub-action on the controller of its parent page through its ID.
        // If `CloudflarePurgeLinks` wasn't defined, the individual URL of this DO would be purge, but
        // not its parent.
        return $this->Parent()->Link($this->ID);
    }

    public function CloudflarePurgeLinks()
    {
        // The content of this DO is used when rendering the parent page. So when this DO is saved, we
        // want to purge the parent's page URL as well.
        return [$this->Link(), $this->Parent()->Link()];
    }

}