Подтвердить что ты не робот

Контентные и другие HTTP-заголовки?

Это дает мне какое-либо преимущество, если я устанавливаю этот заголовок при создании обычных html-страниц?

Я вижу, что некоторые фреймворки внесут это свойство заголовка, и мне было интересно, почему... (Наряду с другими заголовками, например Content-Type: text/html)

Загружает ли браузер сайт быстрее или smth?:)

ps: они делают это как:

ob_start();

... stuff here...

$content = ob_get_contents();
$length = strlen($content);

header('Content-Length: '.$length);

echo $content;
4b9b3361

Ответ 1

Я думаю, что только из-за HTTP Spec говорит, что это можно сделать в каждом случае.

Приложения СЛЕДУЕТ использовать это поле, чтобы указать длину передачи тела сообщения, если это не запрещено правилами в разделе 4.4.

Вы также можете посмотреть в Pauls Answer на вопрос о Deaomon.

Я думаю, что это тоже ответит на ваш вопрос.

Также вы должны использовать Content-Length, если хотите, чтобы кто-то загрузил файл с другим заголовком: например.

<?php
$file = "original.pdf"
$size = filesize($file);
header('Content-type: application/pdf');
header("Content-length: $size");
header('Content-Disposition: attachment; filename="downloaded.pdf"');
readfile($file);
?>

Ответ 2

Это дает мне какое-либо преимущество, если я устанавливаю этот заголовок при генерации нормальные html-страницы?

Загружает ли браузер сайт быстрее или smth?:)

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

Ответ 3

Основной мотивацией для этого является повторное использование существующего TCP-соединения в HTTP 1.1. Content-Length может разграничить, где ответ заканчивается для получателя. Что касается других заголовков, таких как Content-Type, который указывает тип MIME, они предназначены для получателя, чтобы она знала, что делать с результатом в зависимости от типа содержимого Например, в Firefox вы можете указать, какое действие нужно выполнять с разными типами MIME. Если вы можете открыть диалоговое окно сохранения браузера или открыть PDF файл в окне просмотра с помощью Content-Type application/pdf

Ответ 4

Где content-type: text/html, в основном, нужно сказать клиенту, чего ожидать и как обычно обращаться с файлом. В случае ботов он может быть полезен для целей SEO, поскольку он сообщает боту, какой тип файла он смотрит, на котором может измениться его анализ или ранжирование.

В случае content-length он просто позволяет клиенту знать, как большой файл ожидать и, следовательно, где заканчивается ответ.

Ответ 5

Лучший способ (который работает для меня) получения размера удаленного файла:

$head = array_change_key_case(get_headers($file, TRUE));
$filesize = $head['content-length'];

Ответ 6

Предполагается, что для настройки длины контента желательно использовать, когда вы хотите отправить ответ клиенту, даже если вы по-прежнему хотите выполнять более длительные операции.

См. этот ответ, в котором объясняется, что вы должны установить длину контента, написать свой вывод и затем выполнить дальнейшие операции в script, не заставляя клиента ждать дольше.