Тип контента Cloudflare

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

PHP скрипт:

<?php
ob_start();
ob_start('ob_gzhandler');

$file = $_SERVER['DOCUMENT_ROOT'] . "/MyPath.txt"; //Path to your *.txt file
$contents = file($file);
$string = implode($contents);
echo $string;
ob_end_flush();  // The ob_gzhandler one
header('Content-Length: '.ob_get_length());
ob_end_flush();  // The main one

?>

Заголовок ответа CloudFlare:

HTTP/1.1 200 OK
Date: Wed, 19 Aug 2015 17:29:33 GMT
Content-Type: text/html
Connection: close
Set-Cookie: __cfduid=d47ae5690afc8da407e829810c558510b1440005373; expires=Thu, 1
8-Aug-16 17:29:33 GMT; path=/; domain=.mysite.com; HttpOnly
X-Powered-By: PHP/5.5.28
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Set-Cookie: PHPSESSID=f7b9cb0b5e9bf7e9af1d732e566a1e24; path=/
Server: cloudflare-nginx
CF-RAY: 218794cf540e0436-ORD

Заголовок LocalHost:

HTTP/1.1 200 OK
Date: Wed, 19 Aug 2015 17:39:10 GMT
Server: Apache/2.4.9 (Win64) PHP/5.5.12
X-Powered-By: PHP/5.5.12
Set-Cookie: PHPSESSID=s3hdkbh4vd2rj5ieqocafebju6; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Length: 135680
Connection: close
Content-Type: text/html

2

Решение

Вам нужно будет либо добавить расширение файла, чтобы вывод из вашего скрипта кэшировался, либо использовать правила страницы для принудительного кэширования ресурса. Это приведет к тому, что файл не будет отправлен с использованием чанкованного кодирования, что позволит включить заголовок длины содержимого.

От CloudFlare помощь:

Решение / обходной путь — если вы добавите расширение файла к ресурсу, чтобы оно соответствовало нашему списку поддерживаемых расширений файлов, http://example.com/test/dynamicallyimage.php?size=3 становится http://example.com/dynamicallyimage.jpg Система CloudFlare затем отправит его с заголовком длины содержимого, если вы также отправляете HTTP 1.0 в качестве протокола.

В качестве альтернативы вы можете использовать PageRule и использовать опцию «Custom Caching», чтобы выбрать «кэшировать все», что заставит нашу систему кэшировать http://example.com/test/dynamicallyimage.php?size=3 хотя у него нет одного из наших обычных расширений файлов — в этом случае длина содержимого также будет сохранена.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]