Нединамические пользовательские заголовки HTTP

Согласно этой статье Mozilla на средствах Ogg , средства массовой информации работают более плавно в браузере с заголовком X-Content-Duration , давая длину в секундах от фрагмента.

Предполагая, что у меня такая длина хранится где-то (конечно, в базе данных, возможно, также в самом имени файла ( video-file-name.XXX.ogv , где XXX – это время в секундах)), есть ли способ сформировать этот дополнительный заголовок используя только настройки Apache .htaccess ? Я спрашиваю, потому что загрузка файла в PHP-скрипт кажется неуклюжим, особенно если PHP по умолчанию добавит другие заголовки, которые отключат кеширование, и не будут корректно отвечать на запросы диапазона (частичного контента). Да, на PHP может быть написано много кода, чтобы поддерживать ETags и запросы диапазона, но кажется, что излишний способ сделать все это просто для добавления одного заголовка, когда Apache имеет все встроенные функции.

Это домен mod_cern_meta . Он позволяет статически назначать дополнительные HTTP-заголовки файлам.

Вы можете использовать задание cron и генерировать * .meta-файл для каждого видео.

У меня нет примеров, но вы должны иметь возможность использовать mod_header для указания заголовков HTTP Response на уровне .htaccess.

Конечно, вопрос о том, где я должен добавить заголовок, действительно зависит от того, как вы обращаетесь к нему. Если вы просто нажимаете статический ресурс для загрузки, добавление его через Apache имеет смысл. Однако вы упоминаете БД. Если вы решите сохранить эти файлы в базе данных, тогда у вас есть API, предоставляющий этот файл, и в этом случае реализация API должна добавить заголовок, а не отключить его до apache.

Кроме того, если требуемые динамические данные требуют обработки для определения (не в имени файла или т. Д.), То вы уже используете какой-то движок кода для его достижения, просто добавьте этот заголовок.

Это то, что вы делаете с расширением mod_perl, чтобы перехватить эти запросы и добавить дополнительные заголовки, прежде чем позволить Apache продолжить его обработку.

Один чисто PHP-подход, который может работать, заключается в том, чтобы запросить маршрут через PHP с помощью mod_rewrite, добавить дополнительный заголовок, а затем позволить Apache обрабатывать остальные, используя виртуальную функцию.

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