Implementing Caching Strategies in PHP to Improve User Experience
This article explains various PHP caching techniques—including file‑system, memory (Memcache and Redis), and framework (Laravel) caches—providing code examples and configuration steps to reduce database load, speed up page rendering, and enhance overall user experience.
As the internet evolves, user experience becomes crucial for website development, and an effective caching strategy can boost performance for PHP applications by reducing database queries, lowering server load, and speeding up page loads.
File System Based Cache
File system caching stores serialized data in files and reads it back via deserialization, suitable for small data due to slower I/O. Example implementation:
<code><?php
function get_data_from_cache($key) {
$filename = "/tmp/" . md5($key) . ".cache";
if (file_exists($filename)) {
$file_content = file_get_contents($filename);
$data = unserialize($file_content);
if ($data['exp_time'] > time()) {
return $data['value'];
} else {
unlink($filename);
}
}
return null;
}
function set_data_to_cache($key, $value, $exp_time = 3600) {
$filename = "/tmp/" . md5($key) . ".cache";
$data = [
'exp_time' => time() + $exp_time,
'value' => $value,
];
$file_content = serialize($data);
file_put_contents($filename, $file_content);
}
?>
</code>Memory Based Cache
Memory caches keep data in RAM for faster access. Common PHP memory caches include Memcache and Redis. Example implementations:
Memcache
<code><?php
$memcache = new Memcache();
$memcache->connect("127.0.0.1", 11211) or die ("Could not connect");
// Retrieve data from cache
function get_data_from_memcache($key) {
global $memcache;
$data = $memcache->get(md5($key));
return $data ? $data : null;
}
// Store data in cache
function set_data_to_memcache($key, $value, $exp_time = 3600) {
global $memcache;
$memcache->set(md5($key), $value, false, $exp_time);
}
?>
</code>Redis
<code><?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('password');
// Retrieve data from cache
function get_data_from_redis($key) {
global $redis;
$data = $redis->get(md5($key));
return $data ? $data : null;
}
// Store data in cache
function set_data_to_redis($key, $value, $exp_time = 3600) {
global $redis;
$redis->set(md5($key), $value, $exp_time);
}
?>
</code>Framework Based Cache
Most PHP frameworks provide built‑in cache components. Using Laravel as an example, the article shows how to install Laravel, configure Redis as the cache driver, and use the Cache facade to get and set cached data.
Install Laravel
<code>composer create-project --prefer-dist laravel/laravel blog
</code>Set Cache Driver
Edit the .env file to set CACHE_DRIVER=redis and add Redis configuration in config/database.php as shown.
<code>...
'redis' => [
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
],
...
</code>Use Cache Component
<code><?php
use Illuminate\Support\Facades\Cache;
// Retrieve data from cache
function get_data_from_laravel_cache($key) {
return Cache::get(md5($key));
}
// Store data in cache
function set_data_to_laravel_cache($key, $value, $exp_time = 3600) {
Cache::put(md5($key), $value, $exp_time);
}
?>
</code>By storing data in caches, applications avoid repeated database access, greatly improving response speed and user experience. Proper cache expiration, invalidation, and update mechanisms are essential to prevent stale data.
php中文网 Courses
php中文网's platform for the latest courses and technical articles, helping PHP learners advance quickly.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.