Клиентский JavaScript (встроенный в статический HTML) работает гораздо медленнее, когда страница доступна через HTTP, чеJavascript

Форум по Javascript
Ответить
Anonymous
 Клиентский JavaScript (встроенный в статический HTML) работает гораздо медленнее, когда страница доступна через HTTP, че

Сообщение Anonymous »

Извините, я действительно не мог найти никаких обсуждений по этому конкретному предмету, так что вот моя проблема:
У меня очень простой скрипт, встроенный в статический HTML -файл, который может сортировать строки таблицы, нажав поля заголовка. Запуск страницы локально (не Localhost, только статический файл: //), сортировка рядов таблиц ~ 10000 идет практически мгновенно (до .3S). Но размещение того же файла на сервер и запустив его оттуда, замедляет каждую сортировку примерно до 10 секунд, что делает его по существу непригодным для использования. Ничто иное не загружается после документа, все данные HTML & JS являются самостоятельно. На самом деле, я даже удивлен, что он работает так быстро локально. Devtools не дает мне подсказки, поскольку браузер просто замораживает во время сортировки и не оставляет следа того, что происходит в течение 10 с.
То такое же поведение в Chrome & Firefox.
Идеи, почему производительность отличается почти двумя порядками без каких-либо клиентских общения? Таблица заполненной текстом (с помощью TheAd): < /p>
function makeSortable( table ) {
var tbody = table.tBodies[0],
headers = table.getElementsByTagName('thead')[0].rows[0].cells,
data = [],
sortedBy = null;
for( let row of tbody.rows ) { // reading table contents to array
let entry = { tableRow: row, values: [] };
for( let cell of row.cells )
entry.values.push( cell.textContent );
data.push( entry );
}
table.sort = function( column ) {
if( sortedBy == column ) { // only reversing the array
data.reverse();
headers[column].classList.toggle('reverse');
}
else // sorting the data
data.sort( function( a, b ) {
return ( a = a.values[ column ] ) > ( b = b.values[ column ] ) ? 1 : ( a < b ? -1 : 0 );
} );
for( let entry of data ) // the actual table rebuild, THIS TAKES LONG
tbody.appendChild( entry.tableRow );
for( let i = 0; i < headers.length; i++ ) // just for styling
headers.classList[ i == column ? 'add' : 'remove']('sorted');
sortedBy = column;
}
for( let i = 0; i < headers.length; i++ ) // making the headers clickable
headers.onclick = function() { table.sort(i); };
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... n-the-page
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»