torann/taggable-file-cache
A Laravel package that adds tag support to the file cache driver, letting you group and invalidate cached items by tag—useful for lightweight file-based caching without Redis or Memcached.
Architecture fit
The package targets a real framework gap: Laravel’s native file cache store is not taggable, so Cache::tags([...]) is unavailable without Redis, Memcached, or the database store. torann/taggable-file-cache layers tag-index files over the local file cache and registers as a cache driver. Architecturally this is a narrow, replaceable component behind Laravel’s first-party Cache API, which is the right shape for a low-risk dependency: one store class, one driver registration, and a config entry. Call sites can stay framework-native, preserving an exit path to Redis later.
The temporal fit is poor. The last release is 1.0.0 from 2018-02-16, placing it in the Laravel 5.5/5.6 era. Laravel’s cache internals, package scaffolding, PHP minimums, config structure, and event wiring have changed since then. The likely outcome is that the package does not install cleanly against the current framework without a fork. The artefact worth evaluating is therefore the reference implementation, not the Composer dependency as-is.
Integration feasibility There are two credible paths, and the TPM should force an explicit choice:
composer require torann/taggable-file-cache, resolve illuminate/* conflicts, likely fork with widened constraints. This is fragile and should be pinned to an exact version or commit SHA.Either way, the integration surface is small — roughly one class, one driver registration, and configuration — on the order of days, not weeks. That is the key planning fact: this is a scoped cache-layer component decision, not a platform bet.
Technical risk
Key questions
cache:clear, deploy-time cache wipes, file permission changes, and Octane worker lifetimes?Stack fit
The pattern fits any Laravel application. The package itself likely fits only older Laravel versions. Confirm with composer why-not torann/taggable-file-cache against the current lockfile before committing any estimate. Design call sites to use only Cache::tags([...]) and standard cache methods; do not leak package-specific APIs into application code.
Migration path There is nothing to migrate from, which removes the usual cutover risk, but there is also no upgrade guide, changelog, or test suite to lean on. The important migration property is the exit path: because consumers use Laravel’s standard taggable cache API, replacing this store with Redis later is a driver swap in config, not an application refactor. Preserve that property and the cost of being wrong stays low.
Compatibility
We must author the support matrix ourselves: supported PHP versions, Laravel majors, single-node versus multi-node fleet, Octane worker lifetime, cache:clear semantics, deploy-time cache wipes, file permissions, and lock behaviour. Treat compatibility as an internal test obligation, not an upstream guarantee.
Sequencing
Cache::tags([...])->flush() semantics end to end.^1.0, and document the removal path.Maintenance Plan on fork-and-vendor as the operating model, not on upstream support. Initial sizing is roughly 1–3 engineer-days to port and test, then about half a day per quarter to keep alive, with spikes on Laravel majors. Nominate a named owner on day one and record the component in the tech-debt register as internally owned.
Support There is no upstream support policy, security advisory history, or compatibility commitment. Internal support must cover incident triage, patching, and upgrade work. Provide a short runbook: where tag indexes live, how to flush safely, how to clear the cache directory, and how to verify tag invalidation after deployment. Avoid using this component for correctness-critical data such as entitlements, pricing, or permissions.
Scaling Acceptable only for single-node deployments or environments where all traffic is sticky to one node. For multi-server, autoscaled, or containerised deployments, reject it and use Redis, Laravel’s native taggable store. File cache also incurs disk I/O per read and per tag operation, so high-throughput workloads are a poor fit. Tag index growth and node-local invalidation are scaling constraints, not just performance concerns.
Failure modes
Ramp-up Ramp-up is small for an engineer familiar with Laravel’s cache layer: the source is small enough to read, and the integration surface is one driver registration. Budget half a day to a day for orientation, plus the spike and concurrency test. The TPM should treat the ramp-up as an internal ownership exercise, not as learning a supported third-party product. If the team cannot name an owner and a removal path, do not adopt it.
How can I help you explore Laravel packages today?