|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.06.2015, 17:11 | #1 |
Пользователь
Регистрация: 04.03.2008
Сообщений: 75
|
Оптимизация Jquery
Добрый день.
Небольшая предыстория: есть подготовленные материал, оформленный как html-страница (только тексты и картинки). Нужно этот текст разбить на равные страницы (с известными размерами). Картинки могут обладать float, т.е. текст будет их обтекать. Как сделано сейчас: весь html обрабатывается блок за блоком, картинки вставляются, текст разбивается по словам, и по каждому слову добавляется. Если новое слово не вмещается в размеры страницы, создаётся новая страница. Сейчас добавление каждого слова выглядит так: Код:
Собственно вопрос: как можно обойтись без html()? Пробовал Append, но работает так же медленно. Прошу подсказки) |
01.06.2015, 18:29 | #2 |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
Если картинка попадает на разрыв страницы, то как решаешь вопрос?
Alar, верни репу!
|
01.06.2015, 21:06 | #3 |
Участник клуба
Регистрация: 08.03.2008
Сообщений: 1,537
|
Добавлять, допустим, по 50 слов за одну итерацию. Или разбивать текст по предложениям и добавлять к тексту по одному предложению за раз. Или я вот смотрю текст у вас <br> форматирован, можно по этим бэрам и разбивать на массив и тоже прибавлять к тексту по элементу или несколько.
Последний раз редактировалось Gorychev; 01.06.2015 в 21:08. |
04.06.2015, 14:03 | #4 |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
Ну, вообще работа с dom штука медленная, а innerHTML ваще тормоз.
Я бы в фоне попилил текст по заголовкам в отдельные слои, предварительно обернув каждое слово в спанчик. Дальше бы драгал картинки до близжайшего непересечения оными границы страницы. Затем уже сам попил, слов по страничкам, запихать в document.fragment, а его уже в соответствующую страницу.
Alar, верни репу!
|
09.06.2015, 17:12 | #5 |
Пользователь
Регистрация: 04.03.2008
Сообщений: 75
|
Если картинка не помещается, то переносится на следующую страницу. Если она и туда не помещается, то масштабируется до размера страницы.
Я сделал так - определял размер страницы, размер шрифта, высчитывал сколько в среднем поместится слов на строку (при средней длине 6 слов плюс пробел, а ширина буквы 4/7 к высоте), считал число строк, и получал количество слов, которые засовывал, и дальше смотрел, поместится ли еще. Ну и еще пара мелких оптимизаций, которые почти не помогли. Короче говоря, производительность выросла в 2.5 раза, книга разбивающаяся на 80 страниц (при размере экрана 1280х1024) стала разбиваться за 6 секунд вместо 15 в начале (на i3) Но это тоже не приемлемо, ведь крутиться это всё будет, в основном, на более слабых железках и на мобильных устройствах, а там производительность намного хуже. Поэтому было решено весь этот скрипт реализовать в виде отдельной странички с textarea, в который копипастится код книжки, и по нажатию кнопки он конвертится в десяток предустановленных размеров, и возвращается в виде готового решения. |
09.06.2015, 18:13 | #6 |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
6 секунд — адово, конечно. Можешь скинуть пару примеров самому поковыряться?
Alar, верни репу!
|
09.06.2015, 20:40 | #7 |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 450
|
ппц, пока писал авторизация слетела, текст не сохранился
адовый форум ниже неполный сокращенный вариант того, что хотел сказать --- для текста допустим, - книга 1000 слов - среднее кол-во слов на странице 300 - кол-во слов на странице в текущей книге 240 1. words = 300 2. поместилось на странице? нет, page = 0 (!) 3. words /= 2 4. поместилось на странице?, да page = 150 (!) 5. words /= 2 6. поместилось на странице?, да page = 150+75 (!) итого: 3 проверки, 225 слов (~240) думаю, смысл ясен https://ru.wikipedia.org/wiki/Геометрическая_прогрессия
Тишина – самый громкий звук
Последний раз редактировалось nerv; 09.06.2015 в 20:52. |
10.06.2015, 10:42 | #8 |
Пользователь
Регистрация: 04.03.2008
Сообщений: 75
|
|
10.06.2015, 10:44 | #9 | |
Пользователь
Регистрация: 04.03.2008
Сообщений: 75
|
Цитата:
|
|
10.06.2015, 10:48 | #10 |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
Я имел ввиду пример данных =) Примеров книг то у меня дофига, конечно. Просто хотелось побаловаться именно с твоим примером. Вдруг шустрее выйдет?
Alar, верни репу!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оптимизация | maksikus | SQL, базы данных | 5 | 01.02.2015 12:19 |
Оптимизация | lynatik50 | SQL, базы данных | 1 | 12.09.2013 12:40 |
Оптимизация | KaSS | Microsoft Office Excel | 30 | 01.08.2013 17:46 |
Оптимизация | Кащей | Общие вопросы C/C++ | 6 | 30.07.2013 09:55 |
Оптимизация | Красноглаз | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 28.10.2011 13:40 |