PHP无需Redis实现简单缓存

起因:MC导航网的加载速度实在是慢,后端占用内存还大,于是就打算加上个缓存,不用每次加载都读取数据库了。

本来是想装个Redis来实现缓存的,但是呢,我懒。。于是就改成文件缓存了。

直接上代码

 


<?php
define('CACHE_DIR', '缓存目录') // 定义缓存目录
/**
* 获取缓存
* @param string $name 缓存名称
* @return string 缓存内容
*/
function cache_get($name){
if (file_exists(CACHE_DIR . $name . '.php')) {
$cache = require(CACHE_DIR . $name . '.php');
$expire = isset($cache['Expire']) ? $cache['Expire'] : 3600;
if (time() - $cache['Time'] < $expire) {
if ($cache['Cache'] == '') {
return false;
} else {
return $cache['Cache'];
}
} else {
return false;
}
} else {
return false;
}
}
/**
* 保存缓存
* @param string $name 缓存名称
* @param string $cache 缓存内容
* @param integer $expire 过期时间 默认3600 单位s
*/
function cache_set($name, $cache, $expire=3600)
{
file_put_contents(CACHE_DIR . $name . '.php', '<?php return array(\'Time\'=>\'' . time() . '\', \'Expire\'=>\' ' . $expire . '\', \'Cache\'=>\'' . $cache . '\');');
}
$cache = cache_get('cache');
if (!$cache) {
// 在这里执行你的代码获取内容并缓存
$content = '简单缓存使用 https://blog.i-coder.top/?p=86';
cache_set('cache', $content, 60 * 60 * 24); // 设置缓存过期时间一天
} else {
$content = $cache;
}
echo $content;

本代码仅适用于跟我一样懒的人。

果然加上缓存后导航网访问快了不少。

本文内容及代码均为原创,转载请标明出处!

点赞
  1. mouse123说道:
    Google Chrome Windows 10

    此代码仅供参考,出现任何问题与本人无关。请慎用。

  2. mouse123说道:
    Google Chrome Windows 10

    如果存在编码问题,可以将cache_get函数里return $cache['Cache'];替换为return base64_decode($cache['Cache']);
    然后把cache_set里file_put_contents前一行加上$cache=base64_encode($cache);

发表评论

电子邮件地址不会被公开。必填项已用 * 标注