Я реализую Heatmap, чтобы отобразить всех пользователей, нажав на мою страницу, используя heatmaps.js Патриком Видом. Heatmap загружается из коллекции «datapoints» для каждого элемента. Но это занимает слишком много времени, чтобы загрузить ....
Issue убывание .:Selectorator.js - селектор всех скрытых элементов на странице
Каждый DataPoint имеет X, Y координаты и селектор (извлекаемые с помощью selectorator.js) из HTML-элемента на странице. В настоящее время я получаю около 5 тыс. Точек для каждой страницы и Мне нужно проверить, не скрыты ли какие-либо элементы, поэтому мы не будем отображать тепловую карту для скрытых элементов.
В настоящее время я использую:
element = $(data.points[i].Element);
element.is(":hidden"))
, но это занимает около 7 секунд, чтобы проверить все эти моменты, которые довольно длинный. У меня закончились идеи, как избежать/оптимизировать эту проблему.
Datapoint деталь:
Element: #pageData > tbody > tr:eq(3) > td:eq(4) > a:eq(0)
Y:0.6546159
X:0.4444231
Псевдо сценарий убывание потока .:
FOREACH(point in allDatapoints)
{
...
calculation of some parameters needed to show on heamapat
...
if (point.element.is(":hidden"))
{
continue;
}
pointsToDisplay.push(point)
}
Я также пытался получить селекторы всех скрытых элементов, но GetSelector()
в selectorator.js, а затем просто идти через этот массив, но он принимает почти то же время, что и функция is(:hidden)
.
Надеюсь, это имеет смысл.
Факт: Получение выбора элемента может занять некоторое время, но обратный процесс (получение и элементов на основе селектора) занимает почти нет времени. -> поэтому я не могу просто отправить массив селекторов скрытых элементов и фильтровать те, которые будут намного быстрее.
Спасибо за редактирование. @TotaloDotoNeto. – Anymoify
запустить профайлер и опубликовать результаты?возможно, это даст некоторое представление о том, что происходит так долго. – epoch
спасибо за профиль, это так, как я, селекторы убивают вашу страницу, вам нужно будет подумать о другом способе этого, возможно, путем сохранения состояния элемента при сборе данных – epoch