生成的重复内容(UUID、缓存响应)javascript

生成的重复内容(UUID、缓存响应)javascript,javascript,web,Javascript,Web,对于电子商务网站,我们正在构建数据注册对象。为此,我们需要创建Web会话的uuid。在构建过程中,我们看到我生成了大量的副本。 作为一个小测试,我们构建了一小段代码。然而,这段代码仍然提供了很多重复项 <script> (function () { var urlEndpoint = 'https://<url>/<endpoint>'; var createXmlHttpRequ

对于电子商务网站,我们正在构建数据注册对象。为此,我们需要创建Web会话的uuid。在构建过程中,我们看到我生成了大量的副本。 作为一个小测试,我们构建了一小段代码。然而,这段代码仍然提供了很多重复项

        <script>
        (function () {
            var urlEndpoint = 'https://<url>/<endpoint>';
            var createXmlHttpRequest = function (url, settings) {
                var request = ('XMLHttpRequest' in window) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); // eslint-disable-line no-undef
                request.open('POST', url);
                request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                request.send((settings.data || ''));
                request.onload = function () {
                    if (request.status >= 200 && request.status < 300 && typeof settings.callback === 'function') {
                        settings.callback('uuid=' + JSON.parse(request.response).uuid + '&timestamp=' + JSON.parse(request.response).timestamp);
                    }
                }
            };
            createXmlHttpRequest(urlEndpoint + '?getuuid=1&' + (new Date()).getTime(), {
                callback: function (data) {
                    createXmlHttpRequest(urlEndpoint + '?' + (new Date()).getTime(), {data: data})
                }
            })
        })();
    </script>

(功能(){
var urlenpoint='https://';
var createXmlHttpRequest=函数(url、设置){
var request=(窗口中的“XMLHttpRequest”)?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');//eslint disable line no undef
request.open('POST',url);
setRequestHeader('Content-Type','application/x-www-form-urlencoded');
请求.发送((settings.data | |“”);
request.onload=函数(){
if(request.status>=200&&request.status<300&&typeof settings.callback=='function'){
callback('uuid='+JSON.parse(request.response.uuid+'×tamp='+JSON.parse(request.response.timestamp));
}
}
};
createXmlHttpRequest(urlEndpoint+'?getuuid=1&'+(新日期()).getTime(){
回调:函数(数据){
createXmlHttpRequest(urlEndpoint+'?'+(new Date()).getTime(),{data:data})
}
})
})();
我们所做的是: -通过post从后端脚本获取uuid -将该uuid传递回另一个后端脚本,并将其保存到数据库中

在执行此操作时,我们在第二次后端调用中获得了大量重复的数据。这对我来说没有任何意义,但也许有人能帮我们解决问题

顺便说一句,这是一个每天浏览量超过200万的高流量网站


另外:保存uuid的第二个调用用于测试目的。这将被删除,我们将在前端使用uuid

这不是服务器上生成uuid的代码的问题吗?嗨,不,这些都是唯一的。这就是为什么我们还要返回时间戳。这也是重复的问题是,您要么接收重复的,要么发送具有相同UUID的多个请求。。。为什么需要一个调用来创建ID,另一个调用来保存ID?不能一次完成吗???这只是一个测试设置。第二个调用将被删除,uuid将仅用于前端第一个测试,即后端uuid生成器正在返回唯一值。使用console.log或类似工具。另外,仅仅是对代码结构的一个注释,为两个完全不同的目的重用
createXmlHttpRequest
函数,并让它传递一个回调,该回调再次调用相同的函数,但根据回调的存在会导致不同的行为,这是令人困惑的。我必须在它们之间来回看3次,才能理解水流。尝试定义两个单独的函数-一个用于初始请求,一个用于回调行为,并根据它们的用途更清楚地命名它们。这不是服务器上生成UUID的代码的问题吗?嗨,不,它们是唯一的。这就是为什么我们还要返回时间戳。这也是重复的问题是,您要么接收重复的,要么发送具有相同UUID的多个请求。。。为什么需要一个调用来创建ID,另一个调用来保存ID?不能一次完成吗???这只是一个测试设置。第二个调用将被删除,uuid将仅用于前端第一个测试,即后端uuid生成器正在返回唯一值。使用console.log或类似工具。另外,仅仅是对代码结构的一个注释,为两个完全不同的目的重用
createXmlHttpRequest
函数,并让它传递一个回调,该回调再次调用相同的函数,但根据回调的存在会导致不同的行为,这是令人困惑的。我必须在它们之间来回看3次,才能理解水流。尝试定义两个单独的函数——一个用于初始请求,一个用于回调行为,并根据它们的用途更清楚地命名它们。