kriss/spreadsheet-smart-cache
Composer 安装命令:
composer require kriss/spreadsheet-smart-cache
包简介
Spreadsheet Smart Cache For Balance memory and speed
README 文档
README
一个专为 PHPSpreadsheet 设计的智能缓存机制,用于优化和平衡大文件处理时的内存使用和性能问题。
简体中文(zh-cn) | English
安装
composer require kriss/spreadsheet-smart-cache
使用方法
详细介绍请参见官方文档:PhpSpreadsheet Memory Saving
$yourLocalPath = __DIR__ . '/' . uniqid('spreadsheet_smart_cache_'); $cache = new \Kriss\SpreadsheetSmartCache\SpreadsheetSmartCache($yourLocalPath); \PhpOffice\PhpSpreadsheet\Settings::setCache($cache);
注意:为避免多并发情况下缓存目录冲突,
$yourLocalPath建议应该执行时都不相同。
设计思路与优势
为什么不使用 APCu、Redis、MemCache?
- APCu 仍然占用服务器内存,与直接使用内存几乎没有区别,且 PhpSpreadsheet 本身并无跨进程缓存共享的必要。
- Redis/MemCache 只是在将内存压力转移到外部服务。当处理大文件及高并发时,极易导致外部缓存服务内存压力过大、性能下降。
为什么推荐文件缓存?
- 处理超大、多个并发的电子表格时,文件缓存几乎可以认为空间无限,更适合大规模数据处理场景。
为什么不直接用常规文件缓存(如 Symfony/cache 或 illuminate/cache 的文件缓存)?
- 这些方案通常是“一个 key 一个文件”的存储模式。
- 处理大量单元格时,会产生海量零碎小文件,频繁读写极大影响性能。
SmartCache 的优化点?
- 批量存储:多个 Cells 共用单一文件缓存,减少文件操作。
- 分块存储:采用 ChunkSize 分块,提升空间利用效率,减少磁盘浪费。
- 高效读写:通过文件 seek 实现偏移读写,避免大量小文件操作。
- 标记与统一处理:删除等操作时,仅标记删除位,最终直接删除整个目录。
性能测试
测试机器:macos M4 16G SSD
php: 8.2
phpoffice/phpspreadsheet: 5.0
| 单元格范围 | 是否使用 SmartCache | 耗时(秒) | memory_peak(M) |
|---|---|---|---|
| A1:Z1000 | N | 0.557178 | 18.00 |
| A1:Z1000 | Y | 0.893424 | 12.00 |
| A1:Z10000 | N | 5.465772 | 120.00 |
| A1:Z10000 | Y | 8.861701 | 48.00 |
| A1:Z20000 | N | 11.333312 | 236.00 |
| A1:Z20000 | Y | 18.627746 | 90.00 |
| A1:Z30000 | N | 16.654778 | 380.00 |
| A1:Z30000 | Y | 27.586086 | 152.00 |
| A1:CZ10000 | N | 21.779006 | 468.00 |
| A1:CZ10000 | Y | 36.568663 | 174.00 |
可通过 scripts/benchmark.php 脚本测试实际性能表现。
kriss/spreadsheet-smart-cache 适用场景与选型建议
kriss/spreadsheet-smart-cache 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 7 次下载、GitHub Stars 达 3, 最近一次更新时间为 2025 年 08 月 28 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 kriss/spreadsheet-smart-cache 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 kriss/spreadsheet-smart-cache 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 7
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 17
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-08-28