Я хочу отобразить пользователю файл крупного текста (Файлы журнала 100 МБ конкретно) через веб-интерфейс, не требуя, чтобы пользователь должен был загрузить весь файл. Очевидно, возврат всего файла к someones веб-браузеру не был бы разумен, таким образом, моя теория была к используемому Ajax для выборки частей файла в зависимости от пользователя, просматривающего путем прокрутки файл, подобный способу, которым Google Maps обеспечивает "окно" карты.
Мой сервер приложений является PHP и мной абсолютно уверенный, что я могу выполнить, соответствующее ищет и прочитывает файл, и возвратите результаты через XHR к приложению, но моя платформа Ajax является додзе, и я не могу думать ни о каком стандарте dijit, который работал бы и пытается выяснить, как лучше всего это должно было бы реализовать что-то.
Я должен получить свой собственный виджет? Уже есть ли что-то там, что я не знаю? Если я создаю свой собственный виджет, какую структуру он должен взять и является там какими-либо хорошими ресурсами для разработки пользовательских виджетов для dojo/dijit? Какие-либо другие мысли?
Это похоже на то, что вам может потребоваться , я бы предположил, чтобы вы использовали LI, потому что вы получите желание выполнить некоторые действия на каждой строке, скорее всего, каждая строка будет актуальна.
Прокрутка приятно, но вы также можете просто блокировать интерфейс с Pagination, что означает, что они нажимают на следующую страницу, предыдущую страницу, и вы ей, затем обновите вид. Это самый простой способ. При прокрутке вам необходимо получить более выше и ниже текущих видимых линий для бесшовных прокрутков.
Например, если вы хотите показать 25 строк, вам нужно привлечь 25 + нижнюю панель на первом ходу и определить линии, показывающие в нижней панели в качестве порога для сигнализации нового события для загрузки дополнительных 25 + нижние подушечные предметы.
С файлом 100 МБ в ближайшее время соберется в ближайшее время, поэтому вам придется очистить предыдущие записи и определить новую верхнюю панель, чтобы сигнализировать запрос, чтобы получить обратный. То есть 1-й Req: Fetch 25 + Нижняя панель, 2-й Req Fetch 25 + Нижняя панель Удалить Pred 25 - верхняя площадка.
Одно следует отметить, когда вы делаете это, по крайней мере, в Firefox, по крайней мере, оно может быть, как правило, возобновляет воображение и не пожарные события после нескольких нагрузок, поэтому вы можете захотеть умирать / решить ваши даже слушатели. Я только говорю это, потому что у меня есть друг, который в настоящее время работает над чем-то с аналогичной функциональностью, и это некоторые из проблем, которые он наткнулся.
Никто не собирается жаловаться, что им нужно нажать на следующую страницу / предыдущую страницу, она будет быстрой и чистой, но запутайте вашу прокрутку, и никто не захочет использовать ваш виджет.
Вот некоторые другие ресурсы по теме: Старый стол прокручиваемый AJAX - Twitter, как нагрузка больше TUT - Пример прокрутки, прочитайте источник - Проверьте этот проект GoogleCode
Я рекомендую кэширование.
Следует отметить, что решение этой проблемы должно учитывать, что чтение достаточно большого файла (100 МБ +) с диска будет связана с диск и, вероятно, опережает любой тайм-аут, что ваш веб-сервер установлен для времени выполнения скриптов Отказ Во избежание того, чтобы пользователь ждать недействительное количество времени, чтобы загрузить любую часть файла, я бы избегал взлома, таких как изменение лимитов тайм-аута вашего сервера.
Вот одно возможное решение, которое приходит на ум: 1) Кэшируйте файл, измельчая его в отдельные файлы. Вы можете легко сделать это в задании CRON или даже вызвать его, когда файл написан. Используйте readfile_chunked ( http://cn2.php.net/manual/en/function.readfile.php#48683 ) или аналогичный.
2) Написать сценарий обработчика услуг, который при вызове из браузера (скажем, './readfile?chunk=##') Возвращает запрошенный кусок.
3) Используйте Widgit Pagination или Scroller, как предложено другой вкладчик, чтобы позвонить по обработчику услуг через AJAX.
Минусы: это неизбежно увеличит количество дискового пространства. Плюсы: Счастливые пользователи в качестве диска будут оптимизированы, и так же будет время выполнения сценария. Кроме того, он хорошо масштабируется. (О порядке O (n)).
Если файл журнала - это текстовый файл с постоянным концом строки, может быть, вы можете получить его по номеру строки.
У меня есть идея с алгоритмом, как это:
-
Я не знаю много о додзё. Я использую прокрутки инструментов jQuery в моем приложении. Легко поставить обработчик события, когда промежуточный проводник достигнет последней страницы, затем извлеките следующий элемент.
Рассматривали ли вы возможность использования Dojo Grid для просмотра логов? В ней встроена поддержка динамической загрузки "страниц", т.е. строк данных.