我试图通过附加'?来阻止缓存? t ='到我的JS文件的末尾。获得这样一个数字的最快方法是什么? time()或rand()还是其他什么?
答案 0 :(得分:6)
time()和mt_rand()在PHP效率方面非常相似 - 根据您需要的因素选择一个或另一个:
如果你真的想知道,time()稍微更快 - 但你真的不需要担心它。 (这是一秒或两秒钟之间的差异。)
(mt_rand()大约是rand()的4倍
您可能已经知道这一点,但请务必在进行优化之前始终对代码进行概要分析;通常它会因为与你的预期完全不同的原因而缓慢运行。
答案 1 :(得分:5)
如果你只是阻止缓存,那么time()就足够了。
答案 2 :(得分:3)
称我为老式,但防止缓存是可以而且应该通过使用HTTP标头而不是唯一网址来实现的。如果您通过PHP动态提供文件:
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>
否则在apache中使用.htaccess文件(或任何其他Web服务器中的类似配置):
<FilesMatch "\.js$">
Header set Cache-Control "no-cache, must-revalidate"
Header set Expires "Sat, 26 Jul 1997 05:00:00 GMT"
</FilesMatch>
答案 3 :(得分:2)
尝试:
'?t=' . mt_rand(time());
答案 4 :(得分:2)
请勿使用rand()
,请使用mt_rand()
。
它使用具有已知特征的随机数生成器,使用Mersenne Twister,这将产生比平均libc rand()提供的快<4>的随机数。
答案 5 :(得分:1)
这有点古老,但这是一千万次执行的时间比较
总执行时间测试mt_rand:0.0067805965741475分钟
总执行时间测试rand:0.0068778196970622分钟
总执行时间测试时间:0.0088921149571737分钟
看来mt_rand快一点。
const user = client.users.fetch(UserID)
答案 6 :(得分:-1)
srand(time());
echo '?t=' . rand();