Heatmaps.jsを使用してすべてのユーザーのクリックを表示するヒートマップをPatrick Wiedが実装しています。ヒートマップは、各要素の「データポイント」のコレクションからロードされます。それはSelectorator.js - ページ上のすべての非表示要素のセレクタ
問題DESC:
....ロードに時間がかかりすぎる各データポイントは、ページ上のX、Y座標と セレクタ(selectorator.jsを使用して取得)HTML要素のを有しています。 現在、私は各ページに約5kポイントを得ています。 隠し要素のヒートマップを表示しないように、いくつかの要素が隠されていないかどうかを確認する必要があります。
element = $(data.points[i].Element);
element.is(":hidden"))
をが、これは非常に長いすべてのそれらの点を確認するのに約7秒かかります:
現在、私は使用しています。 私は、この問題を避ける/最適化する方法を尽くしました。
データポイントの詳細:
Element: #pageData > tbody > tr:eq(3) > td:eq(4) > a:eq(0)
Y:0.6546159
X:0.4444231
疑似スクリプトフローDESC:
FOREACH(point in allDatapoints)
{
...
calculation of some parameters needed to show on heamapat
...
if (point.element.is(":hidden"))
{
continue;
}
pointsToDisplay.push(point)
}
私はまた、すべての隠された要素のセレクターを取得しようとしましたが、selectorator.jsでGetSelector()
、その後、ちょうど行きましたその配列を介してしかし、それはほぼ同じ時間がかかるis(:hidden)
機能。
これは意味があると思います。
事実:要素の取得セレクタは少し時間がかかるかもしれませんが、逆のプロセスは、(セレクタに基づいて取得し、要素)ほとんどの時間を要します。 - >隠された要素のセレクタの配列を送信して、それらをフィルタリングするだけでははるかに高速になるわけではありません。
編集ありがとうございました。 @TotaloDotoNeto。 – Anymoify
プロファイラを実行して結果を投稿しますか?たぶんそれは何をすべきかについてのいくつかの洞察力を与えるでしょう – epoch
プロファイルのおかげで、それは私の選択ではあなたのページを殺している、あなたは、おそらく要素の状態を保存することによって、これを行う別の方法を考える必要がありますデータを収集するとき – epoch