Mux*_*uxa 90 javascript random uuid collision
这涉及到这个问题.我正在使用此答案在JavaScript中生成UUID:
'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
Run Code Online (Sandbox Code Playgroud)
这个解决方案似乎工作正常,但我遇到了冲突.这就是我所拥有的:
所以问题是:
小智 35
确实存在冲突,但仅限谷歌Chrome.在这里查看我对该主题的体验
http://devoluk.com/google-chrome-math-random-issue.html
似乎碰撞只发生在Math.random的前几次调用中.因为如果你只是运行上面的createGUID/testGUIDs方法(这显然是我尝试过的第一件事)它只是没有任何碰撞.
因此,要进行全面测试,需要重新启动Google Chrome,生成32字节,重启Chrome,生成,重启,生成...
Ken*_*ith 18
正如其他人可以意识到这一点 - 我使用这里提到的UUID生成技术遇到了大量明显的冲突.即使在我为随机数生成器切换到seedrandom之后,这些冲突仍在继续.就像你想象的那样,让我把头发撕掉了.
我最终发现问题是(几乎?)与Google的网络爬虫机器人完全相关.一旦我开始忽略用户代理字段中带有"googlebot"的请求,冲突就会消失.我猜他们必须以一种半智能的方式缓存JS脚本的结果,最终结果是他们的蜘蛛网浏览器无法按照普通浏览器的方式运行.
只是一个FYI.
| 归档时间: |
|
| 查看次数: |
24699 次 |
| 最近记录: |