Завершается работа над новой версией и сегодня мне подумалось - почему бы не интегрировать флешовый аудиоплейер в движок? Галерею уже интегрировал. Что для этого нужно? Да почти ничего - добавить javascript?, и отредактировать нужным образом шаблон для файлов. Ничего сложного. Какие аргументы против? Только один - если на страницах не будет аудиофайлов, то javascript все равно будет грузиться. Идеальным вариантом было бы включать соответствующий javascript модуль только там, где имеются аудиофайлы. Другой вариант - в виде плагина, тогда ответственность за включение плеера ложится на владельца сайта - мол типа он сам пожелал на всех страницах грузить плеер. Общий размер плеера около 20Кб - по современным меркам мелочь. Надо только не забывать, что подгружаются также и остальные "мелочи": lightbox галерея, xmlrpc клиент, скрипт аяксовых виджетов, для комментов кнопочки. У модератора еще и модули для модерирования. И к этому списку добавиться аудиоплейер, который будет редко использоваться - практика говорит о том, что картинки на порядок чаще грузят, и галерея более чем уместна, в отличии от аудиоплейера.

Таким образом задача сводится к следующему: заранее определить, есть ли на странице аудиофайлы, чтобы подключать плеер. В модели генерации контента сверху вниз это невозможно - нижегенеририрующие объекты должны будут редактировать выше стоящих, что порождает теоретический хаос. Как же быть? Либо менять модель генерации контента, либо разрешить редактирование уже сгенерированного контента.

Модель генерации менять не стоит - ибо совсем не понятно на конкретно какую модель. Сейчас контент генерируется в виде иерархического дерева: встречается тег и этот тег отдает готовый контент, а внутри этого тега могут быть другие вложенные теги. Ну да ладно, а то уже дебри начинаются. Но надо заметить, что не все так фатально - объекты могут делать добавки в секцию head - пример на странице постов добавляется линк на рсс комментов. Также на страницах постов можно было бы включать и аудиоплейер, если в постах есть аудиофайлы. Но для этого придется делать спецпроверку и включать дополнительный код в исходники поста. А на мой взгляд редактирование исходников поста по каждому чиху очень плохой вариант.

Как еще один способ оптимизации - это подключать по требованию, on demand. В редакторе постов я уже опробовал и протестировал динамическую загрузку javascript. Поясню - редактор постов это обычная форма, с одним javascript. В этом скрипте по клику происходит получение списка файлов с сервера, а также загружается флешевый загрузчик файлов. Изначально флешевый загрузчик не появляется на странице, а только после клика по ссылке"Файлы". То есть страница быстро грузится, не отягощенная флешем и сопутствующими javascript.

Можно было бы применить подобную модель и к аудиофайлам: на аудиофайлах поставить ссылку "прослушать", по клику будет подгружаться аудиоплейер, и думаю следует поставить в настройках сразу автоплей, поскольку был уже один подтверждающий клик. Недостаток такого способа (а может и наоборот - достоинство) это отсутствие плеера сразу на странице. Мне лично, очень нравится как раз вариант с аяксовым кликом - и страница чиста от плеера, а желающие могут без проблем послушать прямо в браузере, ведь плеер все равно подгрузится.

Что скажите?