在本文中,我们将探索PhpFastCache库,该库使您可以在PHP应用程序中实现缓存。 因此,它有助于改善整体网站性能和页面加载时间。
什么是PhpFastCache?
PhpFastCache是??一个库,可轻松在PHP应用程序中实现缓存。 这是一个易于使用但功能强大的库,提供了多个API,可帮助您轻松实现自己选择的缓存策略。
不要误以为它只是传统的文件系统缓存方案。 实际上,PhpFastCache支持大量适配器,使您可以从高性能后端(如Memcache,Redis,MongoDB,CouchDB等)中进行选择。
让我们快速看一下几个最受欢迎的适配器:
文件系统
Memcache,Redis和APC
CouchDB和MongoDB
Zend磁盘缓存和Zend内存缓存
如果您在上面的列表中找不到适配器的选择,则可以轻松开发一个自定义驱动程序,该驱动程序可以插入系统并轻松工作。
除了基本功能之外,PhpFastCache库还提供了一种事件机制,使您可以响应某些预定义的事件。 例如,当某些内容从缓存中删除时,您可以捕获此事件并刷新或删除相关数据。
在接下来的部分中,我们将介绍PhpFastCache的安装和配置,以及一些示例的演示。
安装与配置
在本节中,我们将介绍PhpFastCache库的安装和配置。 您可以在项目中采用不同的方法来实现此目的。
如果您只是想下载该库的.zip或.tar.gz版本而没有太多麻烦,则可以继续从官方网站上获取它。
另一方面,您也可以将其安装为Composer软件包。 那应该是首选方法,因为它使将来的维护和升级变得更加容易。 如果尚未安装Composer,则必须先进行安装。
安装Composer后,让我们继续使用以下命令获取PhpFastCache库。
$composer require phpfastcache/phpfastcache
成功完成该命令后,您应该已建立供应商目录,其中包含运行PhpFastCache库所需的所有内容。 另一方面,如果您缺少PhpFastCache库所需的任何库或扩展,Composer会要求您首先安装它们。
您还应该找到如下所示的文件:
{
"require": {
"phpfastcache/phpfastcache": "^6.1"
}
}
无论您选择安装PhpFastCache库的方式如何,唯一需要做的就是在应用程序中包含autoload.php文件以启动一切。
如果您使用的是基于Composer的工作流,则autoload.php位于供应商目录下。
// Include composer autoloader
require '{YOUR_APP_PATH}/vendor/autoload.php';
在另一方面,如果你已经下载了.zip或.tar.gz包,autoload.php应提供的src / autoload.php。
// Include autoloader
require '{YOUR_APP_PATH}/src/autoload.php';
有了这些,您就可以开始缓存并获得惊人的PhpFastCache库的好处。 在下一节中,我们将通过几个实际示例演示如何在应用程序中使用PhpFastCache。
示范
我已经提到过,PhpFastCache库在缓存方面支持各种适配器。 在本节中,我将演示如何使用文件系统和Redis适配器。
使用文件适配器缓存
继续并使用以下内容创建file_cache_example.php文件。 我假设您正在使用Composer工作流程,因此供应商目录与file_cache_example.php处于同一级别。 如果您手动安装了PhpFastCache,则可以相应地更改文件结构。
<?php
// Include composer autoloader
require __DIR__ . '/vendor/autoload.php';
use phpFastCache\CacheManager;
// Init default configuration for "files" adapter
CacheManager::setDefaultConfig([
"path" => __DIR__ . "/cache"
]);
// Get instance of files cache
$objFilesCache = CacheManager::getInstance('files');
$key = "welcome_message";
// Try to fetch cached item with "welcome_message" key
$CachedString = $objFilesCache->getItem($key);
if (is_null($CachedString->get()))
{
// The cached entry doesn't exist
$numberOfSeconds = 60;
$CachedString->set("This website uses PhpFastCache!")->expiresAfter($numberOfSeconds);
$objFilesCache->save($CachedString);
echo "Not in cache yet, we set it in cache and try to get it from cache!</br>";
echo "The value of welcome_message:" . $CachedString->get();
}
else
{
// The cached entry exists
echo "Already in cache!</br>";
echo "The value of welcome_message:" . $CachedString->get();
}
让我们仔细研究一下每个代码代表什么。 首先显而易见的是包括autoload.php文件并导入我们打算使用的名称空间。
// Include composer autoloader
require __DIR__ . '/vendor/autoload.php';
use phpFastCache\CacheManager;
使用文件缓存时,应该提供用于保存由缓存系统生成的文件的目录路径。 这就是我们在以下代码段中配置的内容。
// Init default configuration for "files" adapter
CacheManager::setDefaultConfig([
"path" => __DIR__ . "/cache"
]);
当然,我们需要确保缓存目录存在并且可以被Web服务器写入。
接下来,我们实例化缓存对象,并尝试使用welcome_message键加载缓存的项目。
// Get instance of files cache
$objFilesCache = CacheManager::getInstance('files');
$key = "welcome_message";
// Try to fetch cached item with "welcome_message" key
$CachedString = $objFilesCache->getItem($key);
如果该项目在缓存中不存在,我们将其添加到缓存中60秒钟,然后从缓存中显示该项目。 另一方面,如果它存在于缓存中,我们将直接获取它!
if (is_null($CachedString->get()))
{
// The cached entry doesn't exist
$numberOfSeconds = 60;
$CachedString->set("This website uses PhpFastCache!")->expiresAfter($numberOfSeconds);
$objFilesCache->save($CachedString);
echo "Not in cache yet, we set it in cache and try to get it from cache!</br>";
echo "The value of welcome_message:" . $CachedString->get();
}
else
{
// The cached entry exists
echo "Already in cache!</br>";
echo "The value of welcome_message:" . $CachedString->get();
}
这是一个相当容易的设置,不是吗? 实际上,您可以继续运行该文件以检查结果!
首次运行时,应看到以下输出:
Not in cache yet, we set it in cache and try to get it from cache!
The value of welcome_message: This website uses PhpFastCache!
在下一次运行中,输出看起来像这样:
Already in cache!
The value of welcome_message: This website uses PhpFastCache!
这样便可以使用文件系统缓存了。 在下一节中,我们将使用Redis缓存适配器模拟相同的示例。
使用Redis适配器缓存
在继续之前,我假设您已经安装了Redis服务器,并且该服务器正在端口6379上运行,该端口是R??edis的默认端口。
完成设置后,让我们继续创建具有以下内容的redis_cache_example.php文件。
<?php
// Include composer autoloader
require __DIR__ . '/vendor/autoload.php';
use phpFastCache\CacheManager;
// Init default configuration for "redis" adapter
CacheManager::setDefaultConfig([
"host" => '127.0.0.1',
"port" => 6379
]);
// Get instance of files cache
$objRedisCache = CacheManager::getInstance('redis');
$key = "welcome_message";
// Try to fetch cached item with "welcome_message" key
$CachedString = $objRedisCache->getItem($key);
if (is_null($CachedString->get()))
{
// The cached entry doesn't exist
$numberOfSeconds = 60;
$CachedString->set("This website uses PhpFastCache!")->expiresAfter($numberOfSeconds);
$objRedisCache->save($CachedString);
echo "Not in cache yet, we set it in cache and try to get it from cache!</br>";
echo "The value of welcome_message:" . $CachedString->get();
}
else
{
// The cached entry exists
echo "Already in cache!</br>";
echo "The value of welcome_message:" . $CachedString->get();
}
如您所见,除了初始化特定于Redis适配器的配置的部分之外,文件几乎相同。
// Init default configuration for "redis" adapter
CacheManager::setDefaultConfig([
"host" => '127.0.0.1',
"port" => 6379
]);
当然,如果您正在运行本地主机以外的Redis服务器,则应更改主机和端口设置以符合您的要求。
继续并运行redis_cache_example.php文件以查看其工作方式。 您也可以通过在Redis CLI中检查输出来确认它。
127.0.0.1:6379> KEYS *
1) "welcome_message"
这就是使用Redis适配器所需的全部。 我鼓励您尝试其他适配器及其选项!
结论
今天,我们经历了PHP最受欢迎的缓存库之一-PhpFastCache。 在本文的上半部分,我们讨论了基础知识以及安装和配置。 在本文的后面,我们通过几个示例来演示我们讨论的概念。
希望您喜欢这篇文章,并希望您有动力将PhpFastCache库集成到即将进行的项目中。