tedivm/stash

保存缓存的地方。

资助包维护!
tedivm
Tidelift

安装次数: 4,283,889

依赖: 147

建议者: 21

安全性: 0

星标: 960

关注者: 30

分支: 133

开放问题: 34

v1.0.0 2024-01-30 22:08 UTC

README

License Latest Stable Version Total Downloads

Stash 可以通过缓存昂贵函数或代码的结果来加速您的代码。某些操作,如数据库查询或调用外部 API,运行时间很长,但往往在短时间内会有相同的结果。这使得存储结果并在稍后再次调用它们变得更加高效。

安装

可以通过多种方法安装 Stash,尽管建议使用 Composer。

Composer

在 Stash 达到 1.0 版本的稳定 API 之前,建议在次要更新之前查看更改,尽管错误修复将始终保持向后兼容。

"require": {
  "tedivm/stash": "0.17.*"
}

或者使用 composer require 命令

composer require tedivm/stash

Github

Stash 的版本可在 Github 上找到。

文档

尽管这个 README 包含一些有用的数据,但在主站点 stashphp.com 上还有更多信息。

核心概念

主要类

Stash 有三个主要组件:一个代表特定缓存对象分组的 Pool 类,一个提供对单个对象访问的 Item 类,以及一系列允许 Stash 与缓存系统交互的 Driver 类。

每个 Driver 都会被初始化,然后传递给一个 Pool,此时开发者可以简单地忘记它。开发者还可以通过使用复合驱动程序将多个驱动程序一起使用。

Pool 类允许开发者执行多项任务。有一些维护相关任务,如运行 "Purge" 允许后端系统执行维护任务或设置新的日志或驱动程序类。还可以使用 Pool 创建 Item 对象,单个或成组。

每个 Item 代表缓存中的单个对象。它有一个唯一的键,这意味着从同一 Pool 创建的两个 Item 将包含相同的值。一个 Item 可以从缓存系统中设置、获取和删除一个值。

键是一个表示缓存系统中一个项目的字符串。在最简单的情况下,键是一个字母数字字符串,它与缓存中的值有一个一对一的关系。

Stash 提供了一个称为 "堆栈" 的功能,允许开发人员将相关的项目分组在一起,以便可以成组地删除它们。这是通过给项目一个嵌套结构来实现的,类似于计算机上的文件夹。就像文件夹一样,这通过在名称中添加斜杠来表示文件或缓存对象。

例如,一个如 "/models/users/34/profile" 的键可以允许开发人员使用该用户的 id 清除特定用户的用户数据,或清除所有用户的数据,甚至所有模型的数据。它还可以允许开发人员将数据拆分为特定的部分,以只加载所需的资源。

会话存储

提供的 Session 类在构造函数中接受一个 Pool,然后可以使用内置的 PHP 方法、Session::registerHandler 静态函数或任何使用 SessionHandlerInterface 接口的框架注册为 Session 处理程序。

驱动程序

Stash 目前支持以下后端

  • FileSystem
  • Sqlite
  • APC
  • Memcached
  • Redis
  • 临时(仅运行时)

Stash 还支持一个专门的 "组合" 驱动程序,可以包含任何数量的上述驱动程序。这允许开发者创建使用多种后端的分层驱动程序。

Symfony 集成

Stash 包使得在 Symfony 项目中使用 Stash 变得更加容易。此包将 Stash 暴露为服务供开发者使用,并允许 Symfony 使用 Stash 作为会话处理器。

许可

Stash 遵循 BSD 许可证。有关详细信息,请参阅 LICENSE 文件。

报告安全和漏洞问题

此项目利用 Tidelift 安全报告系统 进行安全和漏洞报告。

支持

对于不涉及安全的問題,可以直接在 Github 上提交問題。

专业的 Stash 支持现在通过 Tidelift 提供。