我需要在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/