我有一个 php web 应用程序,其中某些数据每周更改一次,但经常被读取。
检索数据的 SQL 查询和用于 html 输出的 php 代码相当复杂。有多个表连接和大量计算 - 但它们会产生一个相当基本的 html 表。对用户进行分组,每周每个组的表都是一样的,不同的组不一样。我可能有数百张表供数千名用户使用。
出于性能原因,我想缓存此数据。我不想在每次有人点击该页面时都运行这些查询和计算,而是希望每周运行一次流程来为每个组生成表格,以便在需要时让我进行简单的阅读。
我很想知道您成功或不成功地使用了哪些技术来实现这样的目标?
我可以看到的选项包括:
- 将计算的 html 结果存储在 MySQL 表中,由用户组标识
- 将结果数据存储在 MySQL 表中,由用户组标识(困难,因为没有固定数量的数据项)
- 在静态文件中缓存页面输出
欢迎任何其他建议!
最佳答案
在生成表的函数中,将结果存储到磁盘上的文件中:
/cache/groups/1.txt
/cache/groups/2.txt
你不一定要为它运行每周一次的批处理作业,当调用函数获取数据时,检查缓存是否过时(或不存在)。如果是这样,则生成并缓存结果。如果没有,就返回缓存文件。
function getGroupTable($groupId) {
if (cacheIsStale($groupId)) {
generateCache($groupId);
}
return file_get_contents($cacheFile);
}
cacheIsStale()
函数可以只查看 file's timestamps以测试新鲜度。
关于php - 缓存不经常更改的查询结果的最佳技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/672029/