从PHP脚本随机生成的内容在重新加载时没有刷新。
从PHP脚本随机生成的内容在重新加载时没有刷新。
我正在尝试实现一个网站,每次刷新页面时都会显示一张随机的图片。
目前,所有的图片都存放在一个名为“/pngs/”的目录中,我有一个带索引行的MySQL数据库:
...
然后,在HTML中:
引用了一个PHP脚本,该脚本从数据库中选择一行随机数据:
connect_error) die($conn->connect_error); $query = "SELECT * FROM pngs"; $result = $conn->query($query); if (!$result) die($conn->error); $rows = $result->num_rows; $r = rand(1,$rows); $result->data_seek($r); $row = $result->fetch_array(MYSQLI_ASSOC); echo $row['png']; $result->close(); $conn->close(); ?>
目前,在本地Apache Web服务器上运行时,这个方法在所有浏览器中都运行得很好。然而,当从实际网站上传并运行时,图片在刷新时保持不变。
清除缓存并刷新页面会产生预期的效果,所以这可能是一个缓存问题。我尝试了各种清除缓存和禁用缓存的方法,但都没有起作用。
有一种想法是,也许PHP脚本只运行一次,然后将结果存储在缓存中?那么我应该如何强制每次刷新时都运行PHP脚本呢?
另一个想法是,也许使用JavaScript来显示随机图片会是一个更简单和更好的解决办法?如果确实如此,我愿意做出改变。
非常感谢任何建议,我是一个相对新手。
谢谢。
编辑
谢谢你们的回复,图像缓存的解决方法解决了图像的问题。
然而,最初的问题更普遍,类似地也会出现在文本中。
例如,如果我使用一个带索引行的MySQL数据库的文本:
"要显示的第一段文字。" "要显示的第二段文字。" "要显示的第三段文字。" "要显示的第四段文字。"
如果我使用与上面类似的PHP脚本,初始时显示的文本是正确随机的,但当刷新页面时文本保持不变。
所以,我的问题更普遍:如何确保每次刷新都执行PHP/MySQL查询,而不是缓存第一个结果并重复显示?
编辑 2
对不起,又进行了进一步的编辑,现在不确定是否应该发起一个新问题...
所以,我可能误解了PHP/MySQL基础架构的工作方式...
预期功能:每次页面查看都从MySQL数据库返回不同的结果,每次刷新都会为每个用户提供不同的图片/文本。
当前功能:每次页面查看都从MySQL数据库返回相同的结果,途中会更新,但每隔几分钟才更新一次,而不是每次刷新。显示的结果在不同用户之间是相同的,意味着PHP脚本/MySQL查询是在服务器端进行的,而不是为每个用户唯一执行的。
考虑到可能选择了错误的基础架构来实现预期的结果,现在考虑尝试使用JavaScript来实现。