buzzingpixel/craft-static

Craft 3 的静态文件缓存

安装量: 3,293

依赖: 0

建议: 0

安全: 0

星标: 15

关注者: 2

分支: 3

开放问题: 3

类型:craft-plugin

2.0.1 2019-07-22 17:36 UTC

This package is auto-updated.

Last update: 2024-09-10 12:59:25 UTC


README

Craft 3 的静态文件缓存

安装

(请参阅下文关于设置 cron 作业以清除缓存未来或即将到期条目的说明)

Composer

从命令行运行

composer require buzzingpixel/craft-static

通过 composer 安装后,转到您的 Craft CP > 设置 > 插件并安装 Craft Static。

Craft 插件商店

另一种方法是通过 Craft CP 中的插件商店。

配置

有两个全局可配置选项

  • cachePath - 默认为 $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'cache'
  • nixBasedClearCache - 默认为 true。在基于 Unix 的系统上保持为 true,因为它通过执行 rm -rf 清除缓存,这要快得多。否则,PHP 必须遍历缓存路径中的每个文件和目录,并单独删除它们,这可能需要一些时间。

使用

在 Twig 中的使用

您 HTML 输出的全部内容都应该包含在 {% static %} 标签中,因此最好将其放在最外层的布局文件中。您还可以指定标签是否实际缓存,以便在某些场景中禁用缓存,同时仍然将整个内容包装在标签中。

示例

{% set shouldCache = true %}
{% static cache shouldCache %}
    {% minify %}
        <html>
        <head>
            <title>Test title</title>
        </head>
        <body>
            <div>Test body</div>
        </body>
        </html>
    {% endminify %}
{% endstatic %}

在控制器中的另一种用法

如果您想使用控制器来渲染输出,或以其他方式从 PHP 静态缓存,可以使用

\buzzingpixel\craftstatic\Craftstatic::$plugin->getStaticHandler()->handleContent();

更完整的示例

<?php

namespace some\module\namespace;

use yii\web\Response;
use craft\web\Controller;
use buzzingpixel\craftstatic\Craftstatic;

class MyController extends Controller
{
    protected $allowAnonymous = true;
    
    public function actionSomeAction(): Response
    {
        // ... do stuff

        $response = $this->renderTemplate($template, $vars);
        
        // Potentially check an environment variable so you don't cache
        // in dev environment
        if (getenv('STATIC_CACHE_ENABLED') === 'true') {
            Craftstatic::$plugin->getStaticHandler()->handleContent(
                $response->data
            );
        }

        return $response;
    }
}

清除缓存

每次保存元素时都会清除缓存。您还可以从 CP 的“实用工具”>“清除缓存”部分手动清除。

通过命令行清除缓存

您可以从命令行清除缓存,但请注意,您必须通过自定义配置定义 cachePath,因为 $_SERVER['DOCUMENT_ROOT'] 在控制台运行时没有定义,您可能最终会删除服务器上您不想删除的东西。您可以使用如下所示的配置设置

<?php
return [
    'cachePath' => realpath(dirname(__DIR__)) . '/web/cache',
];

要从命令行清除静态缓存,请运行:./craft craft-static/cache/purge

cron 作业

Craft Static 跟踪未来和即将到期的条目,但为了让 Craft Static 在条目到期或以前的未来帖子日期变为过去时清除静态缓存,您需要每分钟运行一个 cron 作业。该命令是

./craft craft-static/cache/check-tracking

以下是一个 cron 作业的示例

* * * * * /user/bin/php /path/to/projet/craft craft-static/cache/check-tracking >> /dev/null 2>&1

许可

版权 2019 BuzzingPixel, LLC

特此授予任何获得此软件及其相关文档文件(“软件”)副本的任何人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许软件的接收者为此目的而使用软件,受以下条件约束

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何形式的保证,无论是明示还是暗示,包括但不限于适销性、特定用途适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论源于、因之或与之有关的行为是合同行为、侵权行为或其他行为。