buzzingpixel / craft-static
Craft 3 的静态文件缓存
Requires
- php: >=7.2
- craftcms/cms: ^3.1.0
Requires (Dev)
- codedungeon/phpunit-result-printer: ^0.26.2
- doctrine/coding-standard: ^6.0
- filp/whoops: ^2.4
- friendsofphp/php-cs-fixer: ^2.15
- lucidtaz/yii2-whoops: dev-master
- phpmd/phpmd: ^2.6
- phpstan/phpstan: ^0.11.12
- phpstan/phpstan-deprecation-rules: ^0.11.2
- phpunit/phpunit: ^8.2
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: ^3.4
- symfony/var-dumper: ^4.3
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
特此授予任何获得此软件及其相关文档文件(“软件”)副本的任何人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许软件的接收者为此目的而使用软件,受以下条件约束
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何形式的保证,无论是明示还是暗示,包括但不限于适销性、特定用途适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论源于、因之或与之有关的行为是合同行为、侵权行为或其他行为。