获取随机php号码的最快方法?

Thw*_*yrm 3 php

我试图通过添加'?来防止缓存?t ='到我的JS文件的末尾.获得这样一个数字的最快方法是什么?time()或rand()还是其他什么?

Aar*_*ken 6

time()和mt_rand()在PHP的效率方面非常相似 - 你根据你需要的因素选择一个或另一个:

  • 很难猜到:使用mt_rand()(例如,生成使用盐)
  • 获取难以猜测的唯一标识符:use mt_rand(1,931415926536); (例如,生成会话ID)
  • (显然)保留记录:使用time()(例如,防止缓存,记录等)

如果你真的想知道,time()快一些 - 但你真的不需要担心它.(这是一秒钟的一个或两个小部分之间的差异.)

(mt_rand()大约是rand()的4倍)

您可能已经知道这一点,但请务必在进行优化之前始终对代码进行概要分析; 通常它会因为与你的预期完全不同的原因而缓慢运行.

  • time()比两者稍快.另外,对于缓存控制,您可能会生成两次相同的随机数; 对于时间(),情况并非如此(除非您的机器速度非常快且每秒有多个请求). (2认同)

Sea*_*oyd 6

你可以说我很守旧,但防止缓存可以而且应该通过使用 HTTP 标头(而不是唯一的 URL)来实现。如果您通过 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
?>
Run Code Online (Sandbox Code Playgroud)

否则使用 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>
Run Code Online (Sandbox Code Playgroud)


Iva*_*sen 5

如果你只是阻止缓存,那么time()就足够了.