2015-08-19 4 views
2

Я только что начал использовать CloudFlare и столкнулся с проблемой с его службой CDN. Я хочу, чтобы мой скрипт отправил обратно заголовок Content-Type. Я пытался использовать правила страницы, но не помогаю одному. Я просто хочу получить длину контента!Cloudflare 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 

ответ

1

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

От CloudFlare help:

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

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

+0

Я устал правильно устанавливать правила для скрипта и содержимого, но он по-прежнему не отправляет длину содержимого. Я также попытался отправить мой запрос HTTP 1.0 http://i.imgur.com/RGoAJqD.png – user3732111

+0

@ user3732111 Вы отправляете параметры GET в свой php-скрипт? Если это так, вам нужно будет сопоставить их в своем правиле страницы, например. 'HTTP: // example.com/test.php *'. –

+0

Я добавил, что к шаблону и он по-прежнему не работает. Я тестировал это на других скриптах, которые не нуждаются в параметрах, а cloudflare не показывает длину содержимого. Я не уверен, что мои настройки верны. – user3732111