maegnes/slim-caching-manager

SLIM 框架的缓存管理器

v1.0.0 2015-12-10 13:07 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:59:59 UTC


README

https://github.com/codeguy/Slim 下工作 ~2.3 (>= 2.3 AND < 3.0)

SlimCachingManager 帮助您简化 Slim 框架资源的缓存和缓存数据的交付。它将每个资源的缓存数据(如 etag、过期时间、最后修改时间等)存储在 ResourceHandlers 中,您可以通过实现 IResourceHandler 来编写自己的 ResourceHandlers。

这对于没有物理变化来检测资源是否已更改的资源非常有用(例如,数据库查询结果)。您可以定义想要缓存的资源(允许通配符表示法)。SlimCachingManager 将自动检查资源是否应该或正在被缓存。其余部分相当简单。

您想使用 SlimCachingManager?只需按照页面底部的步骤操作。所有您的头信息(Etag、Lastmodified、expiry)将由 SlimCachingManager 设置。

如果您有任何问题或建议改进 SlimCachingManager,请随时联系我。如果您想做出贡献,请添加一个新的分支并给我发送一个 pull request。

最好的问候,Magnus

通过 Composer 安装

将以下依赖项添加到您的 composer.json 文件中。

{
    "require": {
		"maegnes/slim-caching-manager": "dev-master"
    }
}

用法

  1. 创建 Slim 实例
  2. 将需要缓存的资源添加到 ResourceMapper 中(允许通配符!)
  3. 添加 before.dispatch 钩子或中间件(在示例中是通过钩子完成的)
  4. 创建 SlimCachingManager\ResourceMapper\Etag() 或 SlimCachingManager\ResourceMapper\Lastmodified() 实例(取决于所需的缓存方法)
  5. 将 ResourceHandler 注入到 ResourceMapper 中
  6. 将 Slim 应用程序注入到 ResourceMapper 中
  7. 调用 setHeaders() 方法

示例

<?php

# 1. Create Slim instance
$app = new Slim();

# 2a. Add resource '/fetch/my/resource/' to my cache list
\SlimCachingManager\ResourceMapper\Base::addResourceWildcard('/fetch/my/resource/', 24);

# 2b. It's also possible to pass a Array with the resource wildcards
\SlimCachingManager\ResourceMapper\Base::addResourceWildcard(
	Array(
		// Moderator data and list
		'/fetch/moderator/data/' => 24,
		'/fetch/moderator/list/' => 24,
	)
);	

# 3. You could also use a middleware. For that simple example i used a before.dispatch hook.
$app->hook('slim.before.dispatch', function () use ($app, $db) {

	# 4. Create instance of your wished ResourceMapper (ETag() or Lastmodified())
	$cachingManager = new \SlimCachingManager\ResourceMapper\ETag();

	# 5. Inject your ResourceHandler, Slim instance and finally set the headers
	$cachingManager->setHandler(new \SlimCachingManager\ResourceHandler\Textfile())
		->setApplication($app) #6.
		->setHeaders(); #7.

});

?>

如果您不想使用 "Textfile" Resourcehandler,只需通过实现 SlimCachingManager\ResourceHandler\IResourceHandler 来编写自己的!

祝您玩得开心!