问题略有改变,但核心保持不变。这是问题所在:
每次用户访问该页面时,服务器都会从Setting
表中提取数据,使用php函数处理它,并以这种方式在html页面上向用户显示结果:md5(result_string+users_ip_address)
。
Setting
表每小时更改一次。因此,result_string
每小时更改一次。
不幸的是,由于计算复杂,获取result_string
需要一些时间(10秒)。
对于任何用户而言,显示md5(result_string+ip_address)
的速度比10秒内更快?
环境:MySQL,php。
答案 0 :(得分:1)
在设置表中添加日期时间字段以存储上次更新的时间。
然后,在php中,设置一个cookie,其过期日期设置为您的设置表的下一个预定更新(在这种情况下为一小时):
if ( isset($_COOKIE["result_string"]) ){
$result_string = $_COOKIE["result_string"];
}else{
$ip_addres = getIp();
$row = getRecordFromSettingTable();
$result_string = md5($row->result_string+$ip_address)
setcookie("result_string", $value, strtotime($row->last_update)+3600);
}
希望它有所帮助。
答案 1 :(得分:1)
步骤1:创建新表或文件,并将result_string的值保存在该文件/ db表中。
步骤2:更新设置表的代码,在文件/ db表中附加更新result_string值逻辑的代码。
步骤3:将代码更改为始终从新文件/ db表中获取值。
答案 2 :(得分:1)
1。)如果“结果”字符串仅在“设置”表更改时更改。始终计算“结果”字符串,然后保存到表格中。
2。)否则通过将结果字符串写入磁盘来缓存结果字符串,并且每小时只计算一次。
filemtime($filename)-time()
file_put_contents($filename,$data)
file_get_contents($filename)
对此非常有帮助。