Как правильно организовать подгрузку большого количества текста?
Есть некая многотомная html-книга. У неё есть index-файл, в котором находится оглавление. И много файлов с именем tom-1.html, tom-2.html и т.д. Каждый такой файл имеет огромный текстовый объём. Если его сразу открыть в браузере, то любой браузер вешается и перестаёт отвечать.
Какие существуют готовые решения на PHP и JavaScript для того, чтобы в браузере грузился не сразу весь том (tom-1.html и т.д.), а была подгрузка по мере прокрутки мыши?
Да, это можно и самому реализовать на jQuery и PHP. Но как это сделать оптимальнее? На PHP я написал скрипт, который читает с помощью fseek файл тома и выдаёт контент по мере прокрутки. Позицию каждой "подгрузки" скрипт записывает в сессию, чтобы знать откуда продолжать "подгружать" при следующем прокручивании колеса мыши. Но при прокручивании до конца, начинаются тормоза. Как сделать, чтобы из любого участка огромного тома нужный фрагмент html-текста показывался одинаково быстро?
И ещё момент. Каждый том содержит много html-тегов (жирный текст, курсив и т.д.). Как правильнее реализовать механизм "закрывания" тегов? Ведь тег может быть в теге. Нужно учесть глубину вложения тегов. И для каждого прописать закрывающий тег...
И ещё момент. Каждый том содержит много html-тегов (жирный текст, курсив и т.д.). Как правильнее реализовать механизм "закрывания" тегов? Ведь тег может быть в теге. Нужно учесть глубину вложения тегов. И для каждого прописать закрывающий тег...
Не надо закрывать, надо просто не резать теги. Отсчитали 1000 символов, проверили, сколько не закрыто, дождались закрытия, отсекли. На деле механизм не простой, куча нюансов, так что проще взять готовое.
Надо учитывать вложенность тегов. Я это реализовал. Но проблема в том, что такой анализ вложенностей потребляет много ресурсов и замедляет подгрузку к концу тома.
Кирилл, надо 1 раз разбить по страницам и больше не возвращаться к этой задаче. Но lazyload возможно не совсем правильный метод, просто постраничная навигация.
Мне вообще не понятно, почему бы не использовать БД для хранения. Зачем эта куча html файлов?
Извините, не совсем ответ на вопрос, но почему не использовать готовые решения как например Gitbook? Там простой интерфейс писать книгу. В браузере все разбито по разделам и подгружается переходами по страницам и автоматически генерируется PDF, DJVU.
Тогда ты сможешь сконцентировать свои усилия на написании книги, самого содержимого а не тем как ее грузить и т.д.
Кирилл, не во всех смыслах эфективней. Если ты расчитываешь что бы все страницы книги индексировались, этого не будет с аякс подгрузкой. И потом это не совсем удобный формат. Люди больше привыкли читать стаью до конца а там решать читать следующую статью или вернуться в другое место.
Такая подгружка может и хороша для чтения подряд, а что если вам нужно например обратиться к определенной главе которая вообще посередине?
Короче лэзи лоуд может быть прикольным но для книги совсем не практично.