Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.10.2018, 13:32
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

Как облегчить страницу
Всем добрый день!

Обращаюсь к вам за советом.
Заранее прошу прощения за длинный текст.

Делаю опросник в специальном программном обеспечении.
Данное ПО - своеобразный конструктор, в который я запихиваю тексты вопросов и варианты ответов. На выходе программа выдает набор файликов .pl, в которых формируется страничка.
По условиям задачи, необходимо было сделать так, чтобы все вопросы анкеты были размещены на одной странице.
Плюс, в анкете есть логика (напр. При ответе на один вопрос показать / скрыть другие вопросы, или отфильтровать список чекбоксов по выбранным и т.д.). Все эти скрипты я писала в head.

В итоге: в анкете получилось более 600 вопросов, страница весит 1.7 Мб.

Заполнять ее будут с планшетов, я проверяла работоспособность на телефоне.
На компе анкета грузится от 2 до 5 секунд, в процессе заполнения, замечаний никаких нет, все работает быстро.
Но вот на телефоне, страница грузится около минуты((
Помимо этого, подвисает обработка кликов и ввода текста (клик срабатывает чуть меньше чем через секунду).

Что я перепробовала:
1) Сжала все скрипты и стили. По возможности выкинула все ненужное, выцепив необходимые куски кода (запихала в head).
На компе, разница в загрузке в нескольких мс. На телефоне не ощутила разницы (ну может она и была в пару секунд, но по сравнению с загрузкой в минуту, меня это не особо радует).
2) В файле .htaccess закэшировала все и вся. Разницы не ощутила…
3) В качестве эксперимента, удалила все скрипты (и самописные с ссылки на jquery), удалила все стили. Картинок у меня толком нет, только маленький логотип внизу страницы весов в 7 кб и иконка на вкладке – 1 кб.
Т.е. остался только чистый html. Разницы никакой, страница грузится минуту.

Что НЕ пробовала:
Знаю, что было бы не плохо подгружать контент динамически. Не рассматриваю такой вариант по двум причинам:
1. Понятия не имею, как объяснить программе, в которой я работаю, что не нужно загружать всю страницу (там ведь и сбор данных и их отправка прописываются, я не могу просто удалить часть вопросов).
2. Еще одно условия задачи – после открытия ссылки, должна быть возможность заполнять весь этот кошмар в отсутствии интернета. Если что-то погружать динамически, то понадобится интернет.

Прошу совета, можно ли как-то ускорить загрузку страницы и убрать тормоза при кликах?
Ответить с цитированием
  #2 (permalink)  
Старый 01.10.2018, 14:02
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

Сообщение от Manyasha
Еще одно условия задачи – после открытия ссылки, должна быть возможность заполнять весь этот кошмар в отсутствии интернета. Если что-то погружать динамически, то понадобится интернет.
Что так, что эдак он нужен
Если вы в первый раз зашли на вашу страничку, то без подключения к сети вы ничего не увидите, кроме уведомления об отсутствии соединения с Интернет.
Можно загрузить разметку странички, подгрузить первоначальные вопросы, закинуть их в какое-нибудь клиентское хранилище, после подгрузить в этот кеш остальные 1.5 мб вопросов.
Нужно, чтобы приложение изначально обращалось за данными к хранилищу, только после фейла к удаленному серверу.

ps. если сервер возвращает не сжатые данные, то лучше сжатие включить.
pps. стили и скрипты лучше вынести в отдельные файлы, браузеры их кешировать умеют + страничка приложения станет легче.

Последний раз редактировалось Nexus, 01.10.2018 в 14:06.
Ответить с цитированием
  #3 (permalink)  
Старый 01.10.2018, 14:09
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

ссылку в студию
Ответить с цитированием
  #4 (permalink)  
Старый 01.10.2018, 15:28
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

Цитата:
Что так, что эдак он нужен
Да, но сейчас я могу загрузить страницу с включенным интернетом, когда все прогрузится уйти в подвал, где нет жизни, и прекрасно заполнять сию анкету без инета))
Спустя 2 часа мучений, когда все заполнено, я выползаю из подвала и нажимаю кнопку Отправить. Такая система сейчас работает.

Цитата:
Нужно, чтобы приложение изначально обращалось за данными к хранилищу, только после фейла к удаленному серверу.
Вот я и не знаю, как это сделать в рамках моего ПО(( По умолчанию загружается сразу все.

Цитата:
ссылку в студию
Вот пример ссылки (немножко подчистила):
http://www.maronline.ru/marina_test/...ame& visit=15
Пожалуйста, сильно не ругайте за кривизну, времени было катастрофически мало((

Может нужно выложить папку, которую генерит программа?
Прикладываю на всякий случай.

Цитата:
стили и скрипты лучше вынести в отдельные файлы
Ок, вынесу, спасибо. Сейчас в head остался не сжатый код, не обращайте внимания, я его пока слишком часто правлю, чтобы каждый раз сжимать.
Вложения:
Тип файла: zip TEST.zip (1.60 Мб, 3 просмотров)
Ответить с цитированием
  #5 (permalink)  
Старый 01.10.2018, 17:54
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Лиса моментом грузит и отрисовывает, а вот на базе хрома - Опера ковыряет и что плохо долго отрисовывает, Хром вообще загрузил, а на экране пусто.
Ответить с цитированием
  #6 (permalink)  
Старый 01.10.2018, 17:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Зачем такой простой по дизайну страницы подгружаемые шрифты, query UI и т.п.?
Ответить с цитированием
  #7 (permalink)  
Старый 01.10.2018, 18:02
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Зачем каждый вариант ответа на вопрос записывается в отдельную таблицу?

Вообще - непонятно чем объяснимая вложенность таблиц. Вот всего один вопрос (более чем наполовину сокращенный, целиком сюда не влез)
<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>

И в каждом инпуте прописан онклик
(Хром у меня вполне загрузил - но не очень быстро)

Последний раз редактировалось Dilettante_Pro, 01.10.2018 в 18:43.
Ответить с цитированием
  #8 (permalink)  
Старый 01.10.2018, 18:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Dilettante_Pro
Хром у меня вполне загрузил
У меня тоже, но кроме серости на экране ничего нет, хотя весь DOM на месте.
Ответить с цитированием
  #9 (permalink)  
Старый 01.10.2018, 18:40
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

Цитата:
Лиса моментом грузит и отрисовывает
Напишите, пожалуйста, Вы на компе проверяли или на телефоне/планшете?
Цитата:
Зачем такой простой по дизайну страницы подгружаемые шрифты
стиль по умолчанию, так исторически сложилось)).
А query UI - будет менюшка в виде всплывающего окна, делаю через dialog().

Можно все это удалить, но как я писала в 1-м сообщении, на загрузке это почти не сказалось. Проверила сейчас, в хроме на стили и jqury-ui ушло 12ms.

Цитата:
Зачем каждый вариант ответа на вопрос записывается в отдельную таблицу?
Так программа по умолчанию делает, я не могу это изменить.

Цитата:
У меня тоже, но кроме серости на экране ничего нет, хотя весь DOM на месте.
Странно, ошибок нет в консоли?
Сейчас уберу серость (она в стилях).
Ответить с цитированием
  #10 (permalink)  
Старый 01.10.2018, 18:45
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

Цитата:
Сейчас уберу серость
Убрала, ссылки на query UI тоже удалила.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать перенаправление на др страницу. Запутался=( padowan AJAX и COMET 1 08.01.2018 01:44
как узнать прокручивают ли страницу? Гугл-мен Элементы интерфейса 1 12.12.2013 11:03
Как добавить текст на страницу? IstonRU Events/DOM/Window 4 24.01.2013 11:36
Как перенаправить на другую страницу? phenix79 Events/DOM/Window 2 16.01.2012 12:15
Как в страницу подгружаемую через AJAX передать $_GET? pagal AJAX и COMET 7 08.11.2011 21:09