画像用に設計された単純な複数アップロードフォームをいじっています。私が現在取り組んでいるのは、ユーザーがフォームを送信する前に 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 スクリプトの時間はかなり短くなりますが、さらに時間がかかります。
私はこのようなものを得るでしょう:
画像 #1 の処理には 6.3307409286499 秒かかりました。
profileGetElementByIdforImage0: 3ms
要素をクリックして検査すると、実際の html 内のソースが変更されていても、ajax の読み込み gif はまだ少し残っています...
ブラウザが画像を調整しなければならないことと関係があるのではないかと考えたので、phpスクリプトに「サムネイル」機能を追加しました。しかし、クライアント側は、フルサイズの画像を使用していたときと同じくらい時間がかかりました.
だから今私は疑問に思っています、これはサーバーからのリクエストと関係がありますか? それともDOMの問題ですか?
任意の洞察をいただければ幸いです。