使用PhpFastCache提升您的网站性能

2023-03-17 13:03:02 性能 您的 提升

在本文中,我们将探索PHPFastCache库,该库使您可以在php应用程序中实现缓存。 因此,它有助于改善整体网站性能和页面加载时间。

什么是PhpFastCache?

PhpFastCache是??一个库,可轻松在PHP应用程序中实现缓存。 这是一个易于使用但功能强大的库,提供了多个api,可帮助您轻松实现自己选择的缓存策略。

不要误以为它只是传统的文件系统缓存方案。 实际上,PhpFastCache支持大量适配器,使您可以从高性能后端(如Memcache,RedismongoDB,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库集成到即将进行的项目中。

相关文章