PHPackages                             abr4xas/cache-ui-laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Caching](/categories/caching)
4. /
5. abr4xas/cache-ui-laravel

ActiveLibrary[Caching](/categories/caching)

abr4xas/cache-ui-laravel
========================

List, search and delete individual cache keys without having to purge the entire cache

v2.2.0(3w ago)783.5k↓75%3[1 PRs](https://github.com/abr4xas/cache-ui-laravel/pulls)MITPHPPHP ^8.3CI passing

Since Oct 3Pushed 4d agoCompare

[ Source](https://github.com/abr4xas/cache-ui-laravel)[ Packagist](https://packagist.org/packages/abr4xas/cache-ui-laravel)[ Fund](https://www.paypal.com/paypalme/soyangelcruz)[ RSS](/packages/abr4xas-cache-ui-laravel/feed)WikiDiscussions master Synced yesterday

READMEChangelog (7)Dependencies (16)Versions (10)Used By (0)

![Cache UI Laravel](art/cache-ui-laravel.png)Cache UI Laravel
================

[](#cache-ui-laravel)

[![Latest Version on Packagist](https://camo.githubusercontent.com/6683abe115876c23ef041207a92f64466c507f66e0f66bef61b6893280f07602/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616272347861732f63616368652d75692d6c61726176656c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/abr4xas/cache-ui-laravel)[![GitHub Tests Action Status](https://camo.githubusercontent.com/1ca0c77d53b367b4adbd8f34161bc6dfc7cb9bf6926e7baa312e74566dc3f45d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f616272347861732f63616368652d75692d6c61726176656c2f72756e2d74657374732e796d6c3f6272616e63683d6d6173746572266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/abr4xas/cache-ui-laravel/actions?query=workflow%3Arun-tests+branch%3Amaster)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/a71e610974ed1565f5c2e5b79a39114c96d7e0800837cac6d250ef8ff0549ecb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f616272347861732f63616368652d75692d6c61726176656c2f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d6173746572266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/abr4xas/cache-ui-laravel/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amaster)[![Total Downloads](https://camo.githubusercontent.com/42832ecb010e43f482efae6a69ee0d3dfc2b6e12c31869a0ad9d9a4feaa0ff8a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f616272347861732f63616368652d75692d6c61726176656c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/abr4xas/cache-ui-laravel)

A Laravel package that allows you to list, search and delete individual cache keys without having to purge the entire cache. Supports multiple cache drivers (Redis, File, Database) with an interactive command line interface.

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require abr4xas/cache-ui-laravel
```

Optionally, you can publish the config file with:

```
php artisan vendor:publish --tag="cache-ui-laravel-config"
```

### Configuration

[](#configuration)

After publishing the config file, you can customize the package behavior:

```
return [
    // Default cache store to use
    'default_store' => env('CACHE_UI_DEFAULT_STORE', null),

    // Character limit in value preview
    'preview_limit' => env('CACHE_UI_PREVIEW_LIMIT', 100),

    // Number of visible items in scroll
    'search_scroll' => env('CACHE_UI_SEARCH_SCROLL', 15),

    // Maximum number of keys to retrieve (null = unlimited)
    'keys_limit' => env('CACHE_UI_KEYS_LIMIT', null),

    // Enable error logging for cache operations
    'enable_logging' => env('CACHE_UI_ENABLE_LOGGING', false),

    // Timeout in seconds for cache operations (0 = no timeout)
    'operation_timeout' => env('CACHE_UI_OPERATION_TIMEOUT', 0),

    // Hide Laravel's internal cache keys (e.g. Cache::flexible() bookkeeping)
    'hide_internal_keys' => env('CACHE_UI_HIDE_INTERNAL_KEYS', true),
];
```

You can also configure these values in your `.env` file:

```
CACHE_UI_DEFAULT_STORE=redis
CACHE_UI_PREVIEW_LIMIT=150
CACHE_UI_SEARCH_SCROLL=20
CACHE_UI_KEYS_LIMIT=1000
CACHE_UI_ENABLE_LOGGING=true
CACHE_UI_OPERATION_TIMEOUT=30
CACHE_UI_HIDE_INTERNAL_KEYS=true
```

### Custom File Cache Driver (Only for File Store)

[](#custom-file-cache-driver-only-for-file-store)

If you are using the `file` cache driver, you should use our custom `key-aware-file` driver.

**Why?** The standard Laravel `file` driver stores keys as hashes, making them unreadable. This custom driver wraps the value to store the real key, allowing you to see and search for them.

Important

This is **NOT** needed for Redis or Database drivers, as they support listing keys natively. As of Laravel 11+, the default cache driver is `database`, so you only need this if you explicitly use the file store.

#### Driver Configuration

[](#driver-configuration)

The `key-aware-file` driver is **registered automatically** by the package's service provider — there is no longer any need to call `Cache::extend()` in your `AppServiceProvider`. Just point your file store at the driver in `config/cache.php`:

```
// ... existing code ...

    'stores' => [

        // ... existing stores ...

        'file' => [
            'driver' => 'key-aware-file', // Changed from 'file' to 'key-aware-file'
            'path' => storage_path('framework/cache/data'),
            'lock_path' => storage_path('framework/cache/data'),
        ],

// ... existing code ...
```

That's it. The package registers the driver inside an application `booting` callback, so it is available before any other service provider tries to read from the cache.

Note

Upgrading from a previous version? You can safely **delete** the manual `Cache::extend('key-aware-file', ...)` block from your `AppServiceProvider` — the package now handles it for you.

#### Custom Driver Benefits

[](#custom-driver-benefits)

- ✅ **Readable keys**: Shows real keys instead of file hashes
- ✅ **Full compatibility**: Works exactly like the standard `file` driver
- ✅ **Better experience**: Enables more intuitive cache key search and management
- ✅ **Backward compatibility**: Existing cache files continue to work
- ✅ **Complete API**: Extends Laravel's `FileStore`, so every cache method works as usual. It overrides the store-level methods that need the key-wrapping (`put`, `get`, `add`, `forever`, `touch`, `increment`, `decrement`, `flush`); higher-level helpers such as `remember`, `rememberForever`, `pull`, `has` and `Cache::flexible()` work on top of those out of the box.

#### Migration from Standard File Driver

[](#migration-from-standard-file-driver)

If you already have cached data with the standard `file` driver, don't worry. The `key-aware-file` driver is fully compatible and:

- Existing data will continue to work normally
- New keys will be stored in the new format
- You can migrate gradually without data loss

Usage
-----

[](#usage)

### Basic Command

[](#basic-command)

Run the command to list and manage cache keys:

```
php artisan cache:list
```

### Specify a Cache Store

[](#specify-a-cache-store)

If you have multiple cache stores configured, you can specify which one to use:

```
php artisan cache:list --store=redis
```

### Features

[](#features)

- 🔍 **Interactive search**: Search cache keys by typing text
- 📋 **List all keys**: View all available keys in your cache
- 🗑️ **Selective deletion**: Delete individual keys without affecting the rest of the cache
- 🔌 **Multiple drivers**: Supports Redis, File and Database
- ⚡ **Performance optimized**: Uses SCAN for Redis (safe for production) and supports key limits
- 📊 **Additional info**: View cache value, size, expiration, and type
- 📤 **Export functionality**: Export key lists to files
- 🔎 **Pattern filtering**: Filter keys using regex patterns
- 🧹 **Clean listings**: Hides Laravel's internal keys (e.g. `Cache::flexible()` bookkeeping) by default
- 🛡️ **Error handling**: Comprehensive error handling with optional logging

### Supported Drivers

[](#supported-drivers)

DriverSupportConfiguration Required**Redis**✅ NativeNone (Works out of the box)**Database**✅ NativeNone (Works out of the box)**File**✅ Enhanced**Requires `key-aware-file` driver****Storage**🛠️ PlannedNot yet supported (see note below)**Array**⚠️ NoNot supported (doesn't persist)**Memcached**⚠️ NoNot currently supportedWarning

The `key-aware-file` driver is **only** needed if you use the `file` cache driver. If you use Redis or Database, you don't need to change your driver configuration.

Note

**`storage` driver (Laravel):** the `storage` cache driver persists entries on a filesystem disk (local, S3, …) using the **same SHA1-hashed file format as the `file` driver**, so keys are not human-readable out of the box. Supporting it well would mean replicating the key-aware approach (a `KeyAwareStorageStore`) over an arbitrary — possibly remote — disk. This is tracked as a future enhancement; for now, use Redis, Database, or the `key-aware-file` driver for readable key listings.

### Usage Example

[](#usage-example)

```
$ php artisan cache:list

📦 Cache driver: redis
✅ Found 23 cache keys

🔍 Search and select a cache key to delete
> user_1_profile

📝 Key:     user_1_profile

Are you sure you want to delete this cache key? › No / Yes

🗑️  The key 'user_1_profile' has been successfully deleted
```

### Advanced Command Options

[](#advanced-command-options)

The command supports several useful options:

```
# Show cache value before deletion
php artisan cache:list --show-value

# Export keys list to a file
php artisan cache:list --export=keys.txt

# Filter keys by regex pattern
php artisan cache:list --filter="/^user_/"

# Show additional information (size, type, expiration)
php artisan cache:list --info

# Limit number of keys displayed (useful for large caches)
php artisan cache:list --limit=50

# Combine multiple options
php artisan cache:list --store=redis --show-value --info --limit=100
```

#### Option Details

[](#option-details)

- **`--store=`**: Specify which cache store to use (defaults to Laravel's default cache store)
- **`--show-value`**: Display the cache value before confirming deletion
- **`--export=`**: Export the list of keys to a file (one key per line)
- **`--filter=`**: Filter keys using a regex pattern (e.g., `/^user_/` matches keys starting with "user\_")
- **`--info`**: Show additional information about each key (size, expiration time, data type)
- **`--limit=`**: Limit the number of keys to retrieve and display (helps with performance on large caches)

### Programmatic Usage

[](#programmatic-usage)

You can also use the `CacheUiLaravel` class directly in your code:

```
use Abr4xas\CacheUiLaravel\Facades\CacheUiLaravel;

// Get all cache keys from default store
$keys = CacheUiLaravel::getAllKeys();

// Get all cache keys from a specific store
$redisKeys = CacheUiLaravel::getAllKeys('redis');

// Get limited number of keys (useful for large caches)
$limitedKeys = CacheUiLaravel::getAllKeys('redis', 100);

// Delete a specific key from default store
$deleted = CacheUiLaravel::forgetKey('user_1_profile');

// Delete a key from a specific store
$deleted = CacheUiLaravel::forgetKey('session_data', 'redis');

// The methods include validation:
// - Empty or invalid store names will use the default store
// - Empty keys will return false
// - Non-existent stores will throw an exception (if logging is enabled, errors are logged)
```

### Advanced Use Cases

[](#advanced-use-cases)

#### Batch Operations

[](#batch-operations)

```
use Abr4xas\CacheUiLaravel\Facades\CacheUiLaravel;

// Get all keys matching a pattern
$allKeys = CacheUiLaravel::getAllKeys('redis');
$userKeys = array_filter($allKeys, fn($key) => str_starts_with($key, 'user_'));

// Delete multiple keys
foreach ($userKeys as $key) {
    CacheUiLaravel::forgetKey($key, 'redis');
}
```

#### Monitoring Cache Size

[](#monitoring-cache-size)

```
use Abr4xas\CacheUiLaravel\Facades\CacheUiLaravel;
use Illuminate\Support\Facades\Cache;

// Use limit parameter for better performance on large caches
$keys = CacheUiLaravel::getAllKeys('redis', 1000);
$totalSize = 0;

foreach ($keys as $key) {
    $value = Cache::get($key);
    if ($value !== null) {
        $totalSize += strlen(serialize($value));
    }
}

echo "Total cache size: " . number_format($totalSize / 1024 / 1024, 2) . " MB";
```

#### Error Handling and Logging

[](#error-handling-and-logging)

The package includes comprehensive error handling. You can enable logging to track cache operation errors:

```
// In config/cache-ui-laravel.php or .env
'enable_logging' => true,

// Errors will be logged to Laravel's log file
// Example log entry:
// [2024-01-01 12:00:00] local.WARNING: Cache UI: Failed to retrieve keys from store 'redis': Connection timeout
```

When logging is enabled, the following operations will log errors:

- Key retrieval failures
- Key deletion failures
- Driver-specific errors (Redis connection, file system, database)

#### Cache Key Analysis

[](#cache-key-analysis)

```
use Abr4xas\CacheUiLaravel\Facades\CacheUiLaravel;

$keys = CacheUiLaravel::getAllKeys('redis');
$patterns = [];

foreach ($keys as $key) {
    $prefix = explode('_', $key)[0] ?? 'unknown';
    $patterns[$prefix] = ($patterns[$prefix] ?? 0) + 1;
}

arsort($patterns);
print_r($patterns); // Shows key distribution by prefix
```

#### Performance Optimization

[](#performance-optimization)

For large caches, always use the `limit` parameter to improve performance:

```
use Abr4xas\CacheUiLaravel\Facades\CacheUiLaravel;

// Get first 100 keys (useful for pagination)
$firstBatch = CacheUiLaravel::getAllKeys('redis', 100);

// Process in batches with pagination
$offset = 0;
$limit = 100;
do {
    $keys = CacheUiLaravel::getAllKeys('redis', $limit, $offset);
    // Process keys...
    $offset += $limit;
} while (count($keys) === $limit);
```

**Note**: The package automatically uses `SCAN` for Redis instead of `KEYS *`, which is safer for production environments as it doesn't block the Redis server.

Internal Keys &amp; `Cache::flexible()`
---------------------------------------

[](#internal-keys--cacheflexible)

Laravel's [`Cache::flexible()`](https://laravel.com/docs/13.x/cache#swr) (stale-while-revalidate) stores **two** entries per key: your value, plus a companion timestamp under `illuminate:cache:flexible:created:` that it uses to decide whether the value is fresh or stale.

That companion entry lives in the same keyspace as your data, so it would otherwise show up in the listing as noise. By default the package hides these internal bookkeeping keys:

```
use Abr4xas\CacheUiLaravel\Facades\CacheUiLaravel;
use Illuminate\Support\Facades\Cache;

Cache::flexible('users', [5, 10], fn () => User::all());

CacheUiLaravel::getAllKeys();
// ['users']  ← the "illuminate:cache:flexible:created:users" companion is hidden
```

If you want to inspect those internal keys too (for example while debugging `flexible()` itself), disable the behavior:

```
// config/cache-ui-laravel.php
'hide_internal_keys' => false,
```

```
CacheUiLaravel::getAllKeys();
// ['users', 'illuminate:cache:flexible:created:users']
```

Note

When `hide_internal_keys` is enabled, `--limit` / `keys_limit` behave as a **soft cap**, since internal keys are filtered out *after* they are fetched from the driver.

Testing
-------

[](#testing)

Run the full quality suite (refactor check, lint, static analysis and tests):

```
# Run everything: Rector (dry-run) + Pint + PHPStan + Pest
composer test

# Or run each step individually
composer test:refactor   # Rector dry-run
composer test:lint       # Pint code style check
composer test:types      # PHPStan (level 6, via Larastan)
composer test:unit       # Pest test suite

# Run a specific test file
vendor/bin/pest tests/Unit/CacheUiLaravelMethodsTest.php

# Run with coverage
vendor/bin/pest --coverage
```

The package includes comprehensive test coverage:

- **Unit tests**: Individual component testing
- **Integration tests**: End-to-end workflow testing
- **Edge case tests**: Error handling and boundary conditions

Static analysis runs at **PHPStan level 6** with [Larastan](https://github.com/larastan/larastan) for Laravel-aware type checking. The configuration lives in `phpstan.neon.dist`.

Technical Details
-----------------

[](#technical-details)

### Performance Optimizations

[](#performance-optimizations)

The package includes several performance optimizations:

1. **Redis SCAN**: Uses `SCAN` instead of `KEYS *` to prevent blocking Redis in production
2. **Key Limits**: Optional limit parameters for all drivers to avoid loading all keys at once
3. **Early Termination**: File driver stops reading files once the limit is reached
4. **Efficient Queries**: Database driver uses optimized queries with limits

### Error Handling

[](#error-handling)

The package includes comprehensive error handling:

- **Validation**: Input validation for store names and cache keys
- **Graceful Degradation**: Falls back to alternative methods when primary methods fail
- **Logging**: Optional error logging via Laravel's Log facade
- **Exception Handling**: Catches and handles driver-specific exceptions

### KeyAwareFileStore Methods

[](#keyawarefilestore-methods)

The `key-aware-file` driver extends Laravel's `FileStore` and overrides the **store-level** methods that need to wrap/unwrap the real key:

- `put($key, $value, $seconds)` - Store an item with expiration
- `get($key, $default = null)` - Retrieve an item
- `add($key, $value, $seconds)` - Store an item only if it doesn't exist
- `forever($key, $value)` - Store an item permanently
- `touch($key, $seconds)` - Extend an existing item's TTL
- `increment($key, $value = 1)` - Increment a numeric value
- `decrement($key, $value = 1)` - Decrement a numeric value
- `forget($key)` - Delete an item
- `flush()` - Clear all items

Higher-level helpers (`remember`, `rememberForever`, `pull`, `has`, `Cache::flexible()`, …) live on Laravel's cache `Repository`, which wraps the store and calls `get`/`put` internally — so they all work transparently on top of the methods above without needing dedicated overrides.

TODO
----

[](#todo)

The following tests and improvements are planned or in progress:

### Unit Tests for KeyAwareFileStore

[](#unit-tests-for-keyawarefilestore)

- Test `put()` method with various data types (string, integer, array, boolean, null)
- Test `get()` method with wrapped and unwrapped data formats
- Test `add()` method behavior and return values
- Test `forever()` method with zero expiration
- Test `increment()` method with numeric values
- Test `decrement()` method with numeric values
- Test backward compatibility with legacy cache files
- Test error handling for corrupted cache files
- Test file permissions and directory creation
- Test `touch()` and `flush()` methods

### Integration Tests

[](#integration-tests)

- Test complete cache workflow (store → retrieve → delete)
- Test multiple keys with different expiration times
- Test cache key listing with `getAllKeys()` method
- Test cache key deletion with `forgetKey()` method
- Test mixed wrapped and legacy data scenarios
- Test performance with large numbers of cache keys
- Test `Cache::flexible()` internal key hiding and listing behavior

### Driver Registration Tests

[](#driver-registration-tests)

- Test automatic `key-aware-file` driver registration by the service provider
- Test driver configuration with different file permissions
- Test driver fallback behavior with missing configuration
- Test driver isolation between different cache stores
- Test error handling for invalid paths and permissions

### CacheUiLaravel Integration Tests

[](#cacheuilaravel-integration-tests)

- Test `getAllKeys()` method with `key-aware-file` driver
- Test `forgetKey()` method with `key-aware-file` driver
- Test mixed driver scenarios (Redis + File + Database)
- Test error handling and graceful degradation

### Edge Cases and Error Handling

[](#edge-cases-and-error-handling)

- Test with invalid serialized data
- Test with very large cache values
- Test with special characters in cache keys
- Test with read-only file systems
- Test with insufficient disk space

### Performance Tests

[](#performance-tests)

- Test benchmark for operations with many keys
- Test load scenarios to validate optimizations

Configuration Options
---------------------

[](#configuration-options)

The package provides several configuration options in `config/cache-ui-laravel.php`:

OptionTypeDefaultDescription`default_store`string|null`null`Default cache store to use when running the command`preview_limit`int`100`Maximum characters to display in value preview`search_scroll`int`15`Number of visible items in search menu`keys_limit`int|null`null`Maximum number of keys to retrieve (null = unlimited)`enable_logging`bool`false`Enable error logging for cache operations`operation_timeout`int`0`Timeout in seconds for cache operations (0 = no timeout)`hide_internal_keys`bool`true`Hide Laravel's internal cache keys (e.g. `Cache::flexible()` bookkeeping) from the listing### Performance Considerations

[](#performance-considerations)

- **Redis**: The package uses `SCAN` instead of `KEYS *` for safer key retrieval in production environments
- **File Driver**: Supports optional `limit` parameter to avoid reading all files in large cache directories
- **Database Driver**: Supports optional `limit` parameter to avoid loading all cache records at once
- **Recommended**: Always use the `--limit` option or `keys_limit` config for large caches to improve performance

### Environment Variables

[](#environment-variables)

You can configure these options via environment variables:

```
CACHE_UI_DEFAULT_STORE=redis
CACHE_UI_PREVIEW_LIMIT=150
CACHE_UI_SEARCH_SCROLL=20
CACHE_UI_KEYS_LIMIT=1000
CACHE_UI_ENABLE_LOGGING=true
CACHE_UI_OPERATION_TIMEOUT=30
CACHE_UI_HIDE_INTERNAL_KEYS=true
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Angel](https://github.com/abr4xas)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

53

—

FairBetter than 96% of packages

Maintenance97

Actively maintained with recent releases

Popularity35

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 80.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~41 days

Recently: every ~49 days

Total

7

Last Release

26d ago

Major Versions

v1.5.1 → v2.0.02025-12-01

### Community

Maintainers

![](https://www.gravatar.com/avatar/6d947508ce4076ed67ec719eb2c74696e025dab397eabc921d483545fb4c403f?d=identicon)[abr4xas](/maintainers/abr4xas)

---

Top Contributors

[![abr4xas](https://avatars.githubusercontent.com/u/405484?v=4)](https://github.com/abr4xas "abr4xas (29 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (5 commits)")[![enwi](https://avatars.githubusercontent.com/u/25170066?v=4)](https://github.com/enwi "enwi (1 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (1 commits)")

---

Tags

hacktoberfesthacktoberfest-accepted

###  Code Quality

TestsPest

Static AnalysisPHPStan, Rector

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/abr4xas-cache-ui-laravel/health.svg)

```
[![Health](https://phpackages.com/badges/abr4xas-cache-ui-laravel/health.svg)](https://phpackages.com/packages/abr4xas-cache-ui-laravel)
```

###  Alternatives

[laravel/octane

Supercharge your Laravel application's performance.

4.0k26.6M223](/packages/laravel-octane)[statamic/cms

The Statamic CMS Core Package

4.8k3.6M986](/packages/statamic-cms)[typicms/base

A modular multilingual CMS built with Laravel, enabling developers to manage structured content like pages, news, events, and more.

1.6k20.4k](/packages/typicms-base)[code16/sharp

Laravel Content Management Framework

79164.7k8](/packages/code16-sharp)[wirechat/wirechat

A Laravel Livewire messaging app for teams with private chats and group conversations.

56910.0k](/packages/wirechat-wirechat)[statamic-rad-pack/runway

Eloquently manage your database models in Statamic.

135224.7k7](/packages/statamic-rad-pack-runway)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
