我有一个php Web应用程序,其中某些数据每周都会更改,但经常会经常阅读.
检索数据的SQL查询和html输出的php代码相当复杂.有多个表连接和大量计算 - 但它们会产生一个相当基本的html表.用户被分组,每周的表对于每个组是相同的,但对于不同的组是不同的.我可能有成千上万的用户拥有数百个表.
出于性能原因,我想缓存这些数据.每次有人点击页面时,我都不想运行这些查询和计算,而是希望运行每周一个过程来为每个组生成表格,在需要时给我一个简单的读取.
我有兴趣知道你成功或成功使用了哪些技术来实现这样的目标?
我能看到的选项包括:
任何其他建议将是受欢迎的!
在生成表的函数中,使其将结果存储到磁盘上的文件中:
/cache/groups/1.txt
/cache/groups/2.txt
Run Code Online (Sandbox Code Playgroud)
在调用函数获取数据时,您不一定要为它运行每周批处理作业,检查缓存是否已过期(或不存在).如果是,则生成并缓存结果.如果没有,只需返回缓存的文件.
function getGroupTable($groupId) {
if (cacheIsStale($groupId)) {
generateCache($groupId);
}
return file_get_contents($cacheFile);
}
Run Code Online (Sandbox Code Playgroud)
该cacheIsStale()函数可以只查看文件的时间戳来测试新鲜度.