Извините, я действительно не мог найти никаких обсуждений по этому конкретному предмету, так что вот моя проблема:
У меня очень простой скрипт, встроенный в статический 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
Клиентский JavaScript (встроенный в статический HTML) работает гораздо медленнее, когда страница доступна через HTTP, че ⇐ Javascript
Форум по Javascript
1752108592
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[i].classList[ i == column ? 'add' : 'remove']('sorted');
sortedBy = column;
}
for( let i = 0; i < headers.length; i++ ) // making the headers clickable
headers[i].onclick = function() { table.sort(i); };
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79695674/client-side-javascript-embedded-in-static-html-runs-much-slower-when-the-page[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия