Как облегчить страницу
Всем добрый день!
Обращаюсь к вам за советом. Заранее прошу прощения за длинный текст. Делаю опросник в специальном программном обеспечении. Данное ПО - своеобразный конструктор, в который я запихиваю тексты вопросов и варианты ответов. На выходе программа выдает набор файликов .pl, в которых формируется страничка. По условиям задачи, необходимо было сделать так, чтобы все вопросы анкеты были размещены на одной странице. Плюс, в анкете есть логика (напр. При ответе на один вопрос показать / скрыть другие вопросы, или отфильтровать список чекбоксов по выбранным и т.д.). Все эти скрипты я писала в head. В итоге: в анкете получилось более 600 вопросов, страница весит 1.7 Мб.:blink: Заполнять ее будут с планшетов, я проверяла работоспособность на телефоне. На компе анкета грузится от 2 до 5 секунд, в процессе заполнения, замечаний никаких нет, все работает быстро. Но вот на телефоне, страница грузится около минуты((:cray: Помимо этого, подвисает обработка кликов и ввода текста (клик срабатывает чуть меньше чем через секунду). Что я перепробовала: 1) Сжала все скрипты и стили. По возможности выкинула все ненужное, выцепив необходимые куски кода (запихала в head). На компе, разница в загрузке в нескольких мс. На телефоне не ощутила разницы (ну может она и была в пару секунд, но по сравнению с загрузкой в минуту, меня это не особо радует). 2) В файле .htaccess закэшировала все и вся. Разницы не ощутила… 3) В качестве эксперимента, удалила все скрипты (и самописные с ссылки на jquery), удалила все стили. Картинок у меня толком нет, только маленький логотип внизу страницы весов в 7 кб и иконка на вкладке – 1 кб. Т.е. остался только чистый html. Разницы никакой, страница грузится минуту. Что НЕ пробовала: Знаю, что было бы не плохо подгружать контент динамически. Не рассматриваю такой вариант по двум причинам: 1. Понятия не имею, как объяснить программе, в которой я работаю, что не нужно загружать всю страницу (там ведь и сбор данных и их отправка прописываются, я не могу просто удалить часть вопросов). 2. Еще одно условия задачи – после открытия ссылки, должна быть возможность заполнять весь этот кошмар в отсутствии интернета. Если что-то погружать динамически, то понадобится интернет. Прошу совета, можно ли как-то ускорить загрузку страницы и убрать тормоза при кликах? |
Цитата:
Если вы в первый раз зашли на вашу страничку, то без подключения к сети вы ничего не увидите, кроме уведомления об отсутствии соединения с Интернет. Можно загрузить разметку странички, подгрузить первоначальные вопросы, закинуть их в какое-нибудь клиентское хранилище, после подгрузить в этот кеш остальные 1.5 мб вопросов. Нужно, чтобы приложение изначально обращалось за данными к хранилищу, только после фейла к удаленному серверу. ps. если сервер возвращает не сжатые данные, то лучше сжатие включить. pps. стили и скрипты лучше вынести в отдельные файлы, браузеры их кешировать умеют + страничка приложения станет легче. |
ссылку в студию
|
Вложений: 1
Цитата:
Спустя 2 часа мучений, когда все заполнено, я выползаю из подвала и нажимаю кнопку Отправить. Такая система сейчас работает. Цитата:
Цитата:
http://www.maronline.ru/marina_test/...ame& visit=15 Пожалуйста, сильно не ругайте за кривизну, времени было катастрофически мало(( Может нужно выложить папку, которую генерит программа? Прикладываю на всякий случай. Цитата:
|
Лиса моментом грузит и отрисовывает, а вот на базе хрома - Опера ковыряет и что плохо долго отрисовывает, Хром вообще загрузил, а на экране пусто.
|
Зачем такой простой по дизайну страницы подгружаемые шрифты, query UI и т.п.?
|
Зачем каждый вариант ответа на вопрос записывается в отдельную таблицу?
Вообще - непонятно чем объяснимая вложенность таблиц. Вот всего один вопрос (более чем наполовину сокращенный, целиком сюда не влез)
<div class="question" id="INFOx2">
<table class="outer_table" cellspacing="0" cellpadding="3" border="0" width="100%">
<tbody>
<tr>
<td align="left">
<div class="nQues">
Вопрос №1 (на странице)</div>
<div class="header1">
Специальность врача (выбрать из списка ниже)</div>
</td>
</tr>
<tr>
<td align="left">
<div class="question_body">
<table class="inner_table" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td align="left">
<table cellspacing="0" cellpadding="2" border="0">
<tbody>
<tr>
<td valign="top" align="left">
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td align="right" valign="top">
<input type="radio" name="INFOx2" value="1" id="INFOx2_1" onclick="SSI_ClearRadioOtherText_INFOx2(1);">
</td>
<td valign="middle" align="left" style="padding-left: 5px;">
<div class="options">
<label for="INFOx2_1">
<font color="navy">Кардиолог амбулаторный</font>
</label>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td valign="top" align="left">
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td align="right" valign="top">
<input type="radio" name="INFOx2" value="2" id="INFOx2_2" onclick="SSI_ClearRadioOtherText_INFOx2(2);">
</td>
<td valign="middle" align="left" style="padding-left: 5px;">
<div class="options">
<label for="INFOx2_2">
<font color="navy">Терапевт высокопотенциальный амбулаторный</font>
</label>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td valign="top" align="left">
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td align="right" valign="top">
<input type="radio" name="INFOx2" value="3" id="INFOx2_3" onclick="SSI_ClearRadioOtherText_INFOx2(3);">
</td>
<td valign="middle" align="left" style="padding-left: 5px;">
<div class="options">
<label for="INFOx2_3">
<font color="navy">ВОП высокопотенциальный амбулаторный</font>
</label>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td valign="top" align="left">
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td align="right" valign="top">
<input type="radio" name="INFOx2" value="4" id="INFOx2_4" onclick="SSI_ClearRadioOtherText_INFOx2(4);">
</td>
<td valign="middle" align="left" style="padding-left: 5px;">
<div class="options">
<label for="INFOx2_4">
<font color="navy">Терапевт непрофилированный амбулаторный</font>
</label>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>
</div>
И в каждом инпуте прописан онклик (Хром у меня вполне загрузил - но не очень быстро) |
Цитата:
|
Цитата:
Цитата:
А query UI - будет менюшка в виде всплывающего окна, делаю через dialog(). Можно все это удалить, но как я писала в 1-м сообщении, на загрузке это почти не сказалось. Проверила сейчас, в хроме на стили и jqury-ui ушло 12ms. Цитата:
Цитата:
Сейчас уберу серость (она в стилях). |
Цитата:
|
| Часовой пояс GMT +3, время: 03:12. |