javascript - 在JavaScript中生成唯一的visitorId

标签 javascript

我需要在JS中生成visitorId,最大长度为7个字符,有效字符为[0-9][A-Z],有什么想法吗?

最佳答案

我几乎可以肯定,你无法在纯 Javascript 中做你想做的事情,因为你无法在不同的访问者之间进行协调。

只有 7 个字符,可用值的范围相对较小 - 我的意思是,足够小,以至于客户端对值的任何伪随机分配几乎肯定会很快导致冲突(请参阅 Birthday paradox ) .

如果您尝试通过附加访客首次出现的时间来解决此问题 - 一般来说,这是一个很好的策略,但这里它会消耗更多的熵。如果您可以用四个字符对这个时间进行编码,那么您就只有 3 个字符来区分同一秒内到达的客户端(根据他们的时钟),并且您将再次遇到冲突.

基本上,如果没有以下任一方法,这个问题就无法解决:

  • 来自服务器的一些帮助 - 即服务器在页面中嵌入一个种子号,可以确保它是唯一的,因为它是服务器端的,您可以让客户端 JS 将其转换为字母数字 ID 不知何故。
  • 使字符更大更大 - 例如,如果访客 ID 中有 64 个字符,则可以将时间戳编码为毫秒、访客的 IP 地址以及可能的其他一些独特信息, 然后是一个随机组件。这里发生冲突的可能性可能会转向 MD5 哈希冲突的可能性,即可接受的点。 (但是根据您对访问者的了解来计算!)

关于javascript - 在JavaScript中生成唯一的visitorId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4223464/

相关文章:

javascript - 声明不带 var 关键字的变量

javascript - 输入最大值等于 javascript 变量

javascript - onClick window.open PHP 中的两个链接不起作用

javascript - 压缩网页中的 XML

javascript - Jquery 获取表行计数忽略类的行

javascript - Google Closure Compiler 如何处理引号(字符串文字)?

javascript - JS-洛达什;嵌套对象(父/子)到平面数组

javascript - Vertical Flexslider部分幻灯片显示问题

javascript - 我可以使用标准 JavaScript 函数创建 XMLHttpRequest 吗?

javascript - JavaScript 中关键字 'new' 有什么副作用?