Производительность: функция загрузки jQuery и рендеринг HTML с нуля с использованием jQuery

Я создаю расширение Chrome для создания таблицы расписания.

У меня есть две HTML-страницы:

  • всплывающая html-страница, где отображается расписание
  • HTML-страница параметров, на которой пользователь может настроить детали расписания (количество часов, периоды времени, дни для показа и т. д.).

Вначале я собирался просто сохранить все настройки расписания в виде json в локальном хранилище и динамически отображать таблицу на ее основе с помощью jQuery каждый раз, когда пользователь проверяет расписание.

// When user saves settings, store options to localStorage 
localStorage["preferences"] = JSON.stringify(preferences)

// then later use it to render the table using jQuery
savedPreferences = JSON.parse(localStorage["preferences"]);
$("ScheduleDiv").html("<table id="Schedule"></table>)
for (i = 0; i < savedPreferences.timePeriods ; i++){
$("#Schedule").insertRow(0) ...
// and so on

но потом я подумал, что если я просто динамически визуализирую таблицу в файл HTML один раз, а затем каждый раз, когда пользователь открывает всплывающее окно, он будет загружать сохраненный файл:

jQuery $("#ScheduleDiv).load('SavedSchedule.html)

вместо того, чтобы каждый раз создавать таблицу с нуля? 1- Возможно ли это для расширения Chrome? 2- Лучше ли с точки зрения производительности каждый раз загружать внешний файл?

Спасибо


person Heila Al-Mogren    schedule 10.01.2021    source источник
comment
Сохранение файла в локальной файловой системе пользователя возможно, как вы можете прочитать в этом довольно старом ответе... Теперь это может быть сложнее, чем кажется. Использование простого атрибута download заставит пользователя сохранить файл где угодно, и ваше расширение не сможет загрузить его обратно. Сохранение на сервере создает новые проблемы, такие как аутентификация. Но если вы это сделаете, то вы должны сохранить json как можно меньше.   -  person Louys Patrice Bessette    schedule 10.01.2021
comment
Если файл небольшой, разница будет незначительной. В любом случае, кому-то — на самом деле вам — придется измерять производительность с помощью встроенного профилировщика devtools.   -  person wOxxOm    schedule 10.01.2021
comment
Если вас беспокоит производительность, не изменяйте DOM внутри цикла, как это делает код, который вы показали. Создайте свою строку/элементы в цикле, а затем вставьте ее в DOM один раз, когда закончите.   -  person Don't Panic    schedule 10.01.2021