当前位置:首页 > PHP

php缓存实现

2026-03-12 18:37:22PHP

PHP 缓存实现方法

文件缓存

文件缓存是最简单的缓存方式,将数据存储在文件中,适合小型项目或临时缓存需求。

创建缓存文件:

$cacheFile = 'cache/data.cache';
$data = '缓存内容';
file_put_contents($cacheFile, $data);

读取缓存文件:

if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < 3600)) {
    $data = file_get_contents($cacheFile);
} else {
    // 重新生成数据
}

Memcached 缓存

Memcached 是高性能分布式内存对象缓存系统,适合高并发场景。

安装 Memcached 扩展后使用:

$memcached = new Memcached();
$memcached->addServer('localhost', 11211);

// 存储数据
$memcached->set('key', 'value', 3600);

// 获取数据
$value = $memcached->get('key');
if ($value === false) {
    // 重新生成数据
}

Redis 缓存

Redis 是高性能键值存储系统,支持多种数据结构,功能比 Memcached 更丰富。

安装 Redis 扩展后使用:

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 存储数据
$redis->set('key', 'value');
$redis->expire('key', 3600);

// 获取数据
$value = $redis->get('key');
if ($value === false) {
    // 重新生成数据
}

OPcache

OPcache 是 PHP 内置的字节码缓存,能显著提升 PHP 执行速度。

在 php.ini 中启用:

zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60

数据库查询缓存

对频繁执行的数据库查询结果进行缓存,减少数据库压力。

使用 PDO 实现简单查询缓存:

$cacheKey = md5($sql);
if ($cache->has($cacheKey)) {
    return $cache->get($cacheKey);
}

$stmt = $pdo->prepare($sql);
$stmt->execute();
$results = $stmt->fetchAll();

$cache->set($cacheKey, $results, 3600);
return $results;

页面级缓存

对整个页面输出进行缓存,适合内容不经常变化的页面。

实现页面缓存:

ob_start();
// 页面内容
$content = ob_get_contents();
file_put_contents('cache/page_'.md5($_SERVER['REQUEST_URI']).'.html', $content);
ob_end_flush();

HTTP 缓存头

利用浏览器缓存机制,通过设置 HTTP 头减少服务器负载。

设置缓存头:

header('Cache-Control: public, max-age=3600');
header('Expires: '.gmdate('D, d M Y H:i:s', time() + 3600).' GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($file)).' GMT');

框架缓存方案

现代 PHP 框架通常提供内置缓存组件,如 Laravel 的 Cache 门面:

// 存储
Cache::put('key', 'value', $minutes);

// 获取
$value = Cache::get('key');

// 记住结果,不存在时自动生成
$value = Cache::remember('key', $minutes, function () {
    return DB::table(...)->get();
});

缓存失效策略

合理的缓存失效策略对系统性能至关重要。

基于时间失效:

$cache->set('key', 'value', 3600); // 1小时后失效

基于事件失效:

// 当数据更新时
$cache->delete('key');

条件失效:

if ($dataChanged) {
    $cache->delete('key');
}

缓存命名空间

使用命名空间管理缓存键,避免冲突。

实现命名空间:

$namespace = 'user_'.$userId;
$cacheKey = $namespace.':profile';

多级缓存

结合多种缓存技术实现多级缓存体系。

内存缓存 + 文件缓存:

php缓存实现

if ($memcached->get('key')) {
    return $memcached->get('key');
} elseif (file_exists($fileCache)) {
    $data = file_get_contents($fileCache);
    $memcached->set('key', $data, 3600);
    return $data;
}

标签: 缓存php
分享给朋友:

相关文章

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_I…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php无限分类的实现

php无限分类的实现

PHP无限分类的实现 无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法: 递归实现法 递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUES…