当前位置:  开发笔记 > 编程语言 > 正文

缓存的最佳技术来自不经常更改的查询

如何解决《缓存的最佳技术来自不经常更改的查询》经验,为你挑选了2个好方法。

我有一个php Web应用程序,其中某些数据每周都会更改,但经常会经常阅读.

检索数据的SQL查询和html输出的php代码相当复杂.有多个表连接和大量计算 - 但它们会产生一个相当基本的html表.用户被分组,每周的表对于每个组是相同的,但对于不同的组是不同的.我可能有成千上万的用户拥有数百个表.

出于性能原因,我想缓存这些数据.每次有人点击页面时,我都不想运行这些查询和计算,而是希望运行每周一个过程来为每个组生成表格,在需要时给我一个简单的读取.

我有兴趣知道你成功或成功使用了哪些技术来实现这样的目标?

我能看到的选项包括:

将计算的html结果存储在由用户组标识的MySQL表中

将结果数据存储在由用户组标识的MySQL表中(很难,因为没有固定数量的数据项)

在静态文件中缓存页面输出

任何其他建议将是受欢迎的!



1> nickf..:

在生成表的函数中,使其将结果存储到磁盘上的文件中:

/cache/groups/1.txt
/cache/groups/2.txt

在调用函数获取数据时,您不一定要为它运行每周批处理作业,检查缓存是否已过期(或不存在).如果是,则生成并缓存结果.如果没有,只需返回缓存的文件.

function getGroupTable($groupId) {
    if (cacheIsStale($groupId)) {
        generateCache($groupId);
    }
    return file_get_contents($cacheFile);
}

cacheIsStale()函数可以只查看文件的时间戳来测试新鲜度.



2> Assaf Lavie..:

确实有一些选择:

每周预呈现页面,然后"静态地"为它们服务.

使用缓存(例如Squid)在第一次机会的基础上缓存这样的响应一周.例如,您可以配置缓存策略,以便转到特定页面的请求(例如,very_long.php?...)与网站的其余部分分开缓存.

确保打开数据库缓存.MySQL具有自己的缓存,您可以对其进行微调,以便不重新计算重复的长查询.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有