我有一个简单的文件来返回当前服务器时间,这是我的代码
<?php
$now = new DateTime(null, new DateTimeZone('Asia/Kolkata'));
echo $now->format("M j, Y H:i:s O")."\n";
?>
当我通过 http 打开文件时,它显示正确的时间,但当我用 https 打开它时,时间从几秒钟到几乎30分钟。
起初我认为这是一个缓存问题,但即使在我禁用缓存后,这仍然存在。
修改
使用此脚本调用时间,该脚本位于主php文件中
<script type="text/javascript">
function serverTime() {
var time = null;
$.ajax({url: 'https://url/timeset.php',
async: false, dataType: 'text',
success: function(text) {
time = new Date(text);
}, error: function(http, message, exc) {
time = new Date();
}});
return time;
}
</script>
如果脚本调用datetime,则在上次在浏览器中打开php文件时返回日期时间。因此,如果有人打开页面,那么脚本就在上面代码返回的日期时间是错误的,当刷新该页面时,返回的日期时间不会改变,仍然会返回不正确的旧日期时间。
有没有什么办法可以让我每隔一秒左右刷新一下这个? 由于它只有一个只有日期时间的小文件,所以它会使用很多资源......
答案 0 :(得分:1)
在您的更新中,我看到您正在使用AJAX
来检索此数据,因此以下是一些调试技术:
$.ajax
中,您应该设置cache: false
$.ajax
中,您可以手动附加带有GET参数的网址,以便始终像url: 'https://url/timeset.php?fresh='+randomNumberFunction()
header("Expires: Mon, 1 Jan 1990 00:00:00 GMT"); header("Cache-Control: no-store, no-cache, must-revalidate");
答案 1 :(得分:0)
我设法让它工作,而不是让脚本从php文件中删除日期,我只是使用javascript日期函数以我需要的格式和时区返回日期。
感谢您的建议