emlog 模板自定义列表增加数据缓存(读取列表加速效果)

admin 轻心小站 关注 LV.19 运营
发表于emlog版块 教程

在 emlog 模板中,我们有时需要展示一些自定义列表,例如文章分类、标签云、友情链接等这些列表通常是从数据库中获取数据并通过模板引擎渲染展示的,对于一些频繁更新的列表,每次都从数据库中获取数据并进行

在 emlog 模板中,我们有时需要展示一些自定义列表,例如文章分类、标签云、友情链接等
这些列表通常是从数据库中获取数据并通过模板引擎渲染展示的,对于一些频繁更新的列表,每次都从数据库中获取数据并进行渲染可能会影响性能
为了解决这个问题,我们可以考虑在模板中增加数据缓存的功能

下面是一个完整的 emlog 模板中给自定义列表增加数据缓存的代码函数
可以直接复制到 emlog 模版文件夹下的 module.php 文件中,然后在 emlog 模版需要的位置写调用代码即可实现emlog模板读取列表加速的效果

<?php
// 读取文章列表写入缓存
// 调用方式:Emlog_Listcache('1,2,3','20','listcache');
// 分为三个参数第一个是分类id,第二个是读取数量,第三个是缓存文件名称
function Emlog_Listcache($sortid = 0, $lognum = '10', $cachename = 'listcache') {
    global $CACHE;
    $db = Database::getInstance();
    if ($sortid) {
        $query = "and sortid in ({$sortid})";
    } else {
        $query = '';
    }
    $sql = "select * from " . DB_PREFIX . "blog WHERE type='blog' and hide='n' and checked='y' {$query} ORDER BY `date` DESC LIMIT 0,{$lognum}";
    $listcache = $CACHE->readCache($cachename);
    if (empty($listcache)) {
        $list = $db->query($sql);
        $listcache = array();
        while ($row = $db->fetch_array($list)) {
            $listcache[] = $row;
            echo '<li><a href="' . Url::log($row['gid']) . '" title="' . $row['title'] . '" target="_blank">' . $row['title'] . '</a></li>';
        }
        $cacheData = serialize($listcache);
        $CACHE->cacheWrite($cacheData, $cachename);
    } else {
        foreach ($listcache as $row) {
            echo '<li><a href="' . Url::log($row['gid']) . '" title="' . $row['title'] . '" target="_blank">' . $row['title'] . '</a></li>';
        }
    }
}


文章说明:

本文原创发布于探乎站长论坛,未经许可,禁止转载。

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,探乎站长论坛平台仅提供信息存储空间服务。

评论列表 评论
发布评论

评论: emlog 模板自定义列表增加数据缓存(读取列表加速效果)

粉丝

0

关注

0

收藏

0

已有0次打赏