我只是在玩一个为图像设计的简单的多重上传表单。我目前正在处理的是一个多重上传表单,它在用户提交表单之前发送 AJAX 请求。PHP 脚本只是将文件保存到服务器并调整图像大小。
发送请求时,会创建一个跨度,其中包含一个图像元素,其 id 对应于列表中的图像编号,并在源中放置一个 ajax 加载 gif。
当响应返回时,我通过它的 id 获取元素,并将源替换为保存在服务器上的图像。
到目前为止一切正常,只是速度非常慢。
完整代码在这里:pastebin
我几乎可以肯定问题正在发生,
xmlHTTP.onreadystatechange = function(){
if( xmlHTTP.readyState == 4 && xmlHTTP.status == 200){
var jsonResponse = JSON.parse(xmlHTTP.responseText);
var actualNumber = jsonResponse.imageNumber-1;
console.log("Image #" + jsonResponse.imageNumber + " Took " + jsonResponse.scriptTime + " to process.");
console.time('profileGetElementByIdforImage'+actualNumber);
document.getElementById("preview"+actualNumber).setAttribute("src", jsonResponse.fullPath);
console.timeEnd('profileGetElementByIdforImage'+actualNumber);
}
};
奇怪的是,如果我把它从本地机器上取下来并上传到我的服务器,它需要更长的时间,尽管 PHP 脚本时间要短得多。
我会得到这样的东西:
Image #1 处理时间为 6.3307409286499 秒。
profileGetElementByIdforImage0:3ms
即使当我单击检查元素时实际 html 中的源代码发生了变化,ajax 加载 gif 仍然保留了一段时间......
我认为这可能与浏览器必须调整图像有关,所以我在 php 脚本中添加了“缩略图”功能。但是客户端花费的时间与我使用全尺寸图像时一样长。
所以现在我想知道,这与来自服务器的请求有什么关系吗?或者这是一个 DOM 问题?
任何见解将不胜感激。