#php #caching
#php #кэширование
Вопрос:
Я планирую настроить что-то похожее на следующее: https://wordpress.stackexchange.com/questions/6109/how-can-i-lock-down-an-old-wordpress-install-i-dont-intend-to-update
В основном папки и файлы генерируются как кэш для сайта php.
Какая информация заголовка отправляется для файлов без расширения? Информация заголовка хранится в текстовом файле, например, дата изменения или что-то еще?
Я хотел бы прекратить использовать расширения для всего содержимого сайта. Например:
/about - html page
/js - my sites javascript with appropriate header info
/logo - my sites logo
etc.
Есть ли какие-либо недостатки или последствия при настройке файлов без расширения.
Что, если я настрою систему кэширования?
Комментарии:
1. var_dump ваша переменная $_SERVER, и вы получите свою информацию
2. @Ibrahim Diallo = Я почти уверен, что это не улавливает то, что сервер отправляет клиенту…
Ответ №1:
Существует несколько вариантов установки заголовков для статических файлов, если у них нет расширения. Для целого каталога проще всего использовать DefaulType
в .htaccess
:
# js/ directory
DefaultType application/javascript
Иногда также полезен sibling ForceType
:
<Files about>
ForceType text/html
</Files>
Но вы также можете задать заголовки для отдельных файлов, используя, например, RewriteRule
:
RewriteRule logo - [T=image/jpeg]
И еще один вариант — использовать mod_meta
. Это позволяет сопровождать каждый статический файл файлом .meta, который определяет отправленный тип MIME.
Комментарии:
1. mode_meta кажется идеальным, как бы мне создать мета-файл из php-скрипта? Я могу сохранить содержимое с помощью
ob_start()
, но я не уверен, как сгенерировать мета-файл.2. Просто создайте дополнительный файл, содержащий только заголовок MIME:
file_put_contents("$fn.meta", "Content-Type: text/html");
— Модуль на самом деле называется mod_cern_meta для Apache httpd.apache.org/docs/2.0/mod/mod_cern_meta.html — и позаботьтесь о настройкеMetaDir .
иMetaSuffix .meta
, чтобы это работало так легко.
Ответ №2:
- Заголовки прикрепляются веб-сервером
- Отправьте статический файл, и вы сможете увидеть с помощью Firebug или аналогичного инструмента, какие заголовки отправляются
- Чтобы переопределить заголовок, который был прикреплен сервером, вы можете использовать
header
функцию PHP. Используйте то же имя заголовка, что и то, которое вы хотите переопределить. Например, если вы хотите переопределить отменитьContent-Length
заголовок, который вы бы сделалиheader('Content-Length: ')
(Хотя для этого конкретного заголовка нет смысла отменять его). - Чтобы прикрепить заголовки к статическим файлам, вам нужно будет сделать это (в Apache) в .htacces или главном файле конфигурации Apache.
Комментарии:
1. В php вы отправляете заголовки следующим образом
header('...')
. Не переопределяют ли эти заголовки то, что веб-сервер отправляет по умолчанию?2. @Lime — да, это именно тот способ переопределить заголовки, выданные сервером.
3. Итак, будут ли эти заголовки переопределения php связаны с файлом, если я создам статическую кэшированную версию? Заголовки связываются с файлом, например, изменяют дату и время?
4. @lime — под статическими файлами, я полагаю, вы имеете в виду HTML. У вас нет способа прикреплять заголовки к HTML-файлам — внутри файлов. Для этого вам нужно будет настроить сам сервер.