Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Страницы не сохраняются к кеш 
V
    Опции темы
rogi08
Дата 3.4.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 18.2.2009

Репутация: нет
Всего: нет




Добрый день,

Как принудительно задать, чтобы страницы, от своего инетовского скрипта сохранялись в кеш IE. Работа в IE принципиальна.

Код
header("Cache-Control: private");
echo "<meta http-equiv=\"Cache-Control\" content=\"private\">";
header("Expires: Thu, 01 Jan 2017 00:00:01 GMT");
echo "<META HTTP-EQUIV=pragma CONTENT=private>";
echo "<meta http-equiv="Expires" content="Mon, 11 May 2018 00:00:00 GMT">";


выше приведенный код,  ни по отдельности, ни как не помогает.

Другие сайты, прекрасно сохраняюся в кеш в IE

Поделитесь опытом, php изучаю пару дней. 

вопрос снят.
Нужно было поменять хостинг.
С другим хостингом всё сохраняется.


Это сообщение отредактировал(а) rogi08 - 3.4.2009, 15:30
PM MAIL   Вверх
s0lman
Дата 3.4.2009, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Может, экранировать кавычки в последней строке нужно?


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
rogi08
Дата 3.4.2009, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 18.2.2009

Репутация: нет
Всего: нет



>> экранировать кавычки в последней строке нужно

согласен, поправил, но не помогло.
PM MAIL   Вверх
MoLeX
Дата 3.4.2009, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



 smile 
Код

header("Cache-Control: private");
echo "<meta http-equiv=\"Cache-Control\" content=\"private\">";
header("Expires: Thu, 01 Jan 2017 00:00:01 GMT");
echo "<META HTTP-EQUIV=pragma CONTENT=private>";
echo "<meta http-equiv="Expires" content="Mon, 11 May 2018 00:00:00 GMT">";


ужас....

пожалуйста запомните:
1. заголовки
2. потом данные



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
rogi08
Дата 3.4.2009, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 18.2.2009

Репутация: нет
Всего: нет



пожалуйста запомните:
1. заголовки
2. потом данные

приму к сведению!

Переделанный скрипт, после замечаний, но кеш не сохраняется.

Код
header("Cache-Control: private");
header("Expires: Thu, 01 Jan 2017 00:00:01 GMT");
echo "<meta http-equiv=\"Cache-Control\" content=\"private\">";
echo "<META HTTP-EQUIV=pragma CONTENT=private>";
echo "<meta http-equiv=\"Expires\" content=\"Mon, 11 May 2018 00:00:00 GMT\">";

PM MAIL   Вверх
ksnk
Дата 3.4.2009, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Поковырялся у себя в архиве, нашел функцию. Она получает на вход имя файла, к примеру,
img/arrow.031.jpeg и посылает img/arrow.jpeg так, чтобы он остался в кэше броузера. 031 здесь выполняет роль номера версии файла. Всякая там секурность и фильтр по именам функцию не интересовали smile 

Во всяком случае - рабочий (пару лет назад точно работал smile ),  пример работы с хидерами и кэшированием.
Код

/**
 *  навечно посылаем файл с солью вида dir/name.XXX.ext
 */

function sendfile($filename){

    if(preg_match('~(.*/)([^/]+)(\.[0-9]+)(\..+)$~',$filename,$m)){
        $filename=$m[1].$m[2].$m[4];
        $ext=$m[4];
    }

    if(is_readable($filename)){
        $expires=1728000;    // 20 дней    
        if(pps($_SERVER["HTTP_IF_MODIFIED_SINCE"])){
            //хидер наличествует! в кэше файл есть - значит можно не посылать... НИЧЕГО не делаем!
            header("Expires: ".gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT') ; // Date in the deep future
            header("Cache-Control: max-age=$expires");
            header("HTTP/1.1 304 Not Modified") ;
            exit();
        }
        // check mimetype from extension
        switch($m[4]){ 
            case '.jpeg':case '.jpg':
                header('Content-type: img/jpeg');
                break; 
            case '.gif':
                header('Content-type: img/gif');
                break; 
            case '.png':
                header('Content-type: img/png');
                break; 
            case '.js':
                header('Content-Type: application/x-javascript');
                if(is_readable($m[1].$m[2].'.pack'.$m[4]))
                    $filename=$m[1].$m[2].'.pack'.$m[4];
                else if(is_readable($m[1].$m[2].'.min'.$m[4]))
                    $filename=$m[1].$m[2].'.min'.$m[4];
                break; 
            case '.css':
                header('Content-type: text/css');
                break;
            default:
                header('Content-Type: text/html; charset=utf8');
        }
        header("Expires: ".gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT') ; // Date in the deep future
        header("Cache-Control: max-age=$expires");
        header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
        
        @readfile($filename);
        exit;
    }
    header('HTTP/1.x 404 Not Found');
    echo("can't send '".$filename."'"); exit;
}



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
rogi08
Дата 3.4.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 18.2.2009

Репутация: нет
Всего: нет



Цитата(ksnk @  3.4.2009,  12:09 Найти цитируемый пост)
if(pps($_SERVER["HTTP_IF_MODIFIED_SINCE"])){


у меня не находит функцию pps .
Возможно это pos ? 

Даже, если закоментировать проверку, всёравно файл в кеш не сохраняется.

Это сообщение отредактировал(а) rogi08 - 3.4.2009, 12:30
PM MAIL   Вверх
ksnk
Дата 3.4.2009, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Угу...
Код

function pps(&$x,$def='') { return (!empty($x))?$x:$def;}

Если нету в массиве такого индекса - выдать значение по умолчанию...

Добавлено через 2 минуты и 6 секунд
В этом месте можно заменить на isset


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
rogi08
Дата 3.4.2009, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 18.2.2009

Репутация: нет
Всего: нет



ksnk, 
хорошо с функцией разобрались,

но данные не сохраняются.

Удивительно, что на localhost всё работает нормально.

А при загрузке скрипта в сеть, данные перестают падать в кеш.

Проблема должна как-то просто решаться, без  хедеров..

Это сообщение отредактировал(а) rogi08 - 3.4.2009, 12:52
PM MAIL   Вверх
ksnk
Дата 3.4.2009, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Чего-то я засомневался, возможно нужно выдавать не img/jpeg, а image/jpeg... Впрочем, в остальном, вроде, работает.

А как проверяется, есть в кэше или нет? Я, к примеру, ставлю live Http Header для FF или IE Http headers для IE и смотрю чего-ж реально передается...





--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
rogi08
Дата 3.4.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 18.2.2009

Репутация: нет
Всего: нет



Господа, вопрос снят.
Нужно было поменять хостинг.
С другим хостингом всё сохраняется.
Всем спасибо.
Всем удачи

PM MAIL   Вверх
awers
Дата 3.4.2009, 15:38 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



Цитата(rogi08 @  3.4.2009,  12:17 Найти цитируемый пост)
вопрос снят.Нужно было поменять хостинг.С другим хостингом всё сохраняется.

глупости. надо было просто посмотреть какие хедеры передаёт ваш хостер в нагрузку к вашим. то что не понравится - переопределить в .htaccess
PM MAIL WWW ICQ Skype   Вверх
rogi08
Дата 26.5.2009, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 18.2.2009

Репутация: нет
Всего: нет



Цитата(awers @  3.4.2009,  15:38 Найти цитируемый пост)
надо было просто посмотреть какие хедеры передаёт ваш хостер в нагрузку к вашим. то что не понравится - переопределить в .htaccess


Хедеры посмотрел различия нашёл,
как теперь поправить хедеры, чтобы кеш сохранялся? 

Файла .htaccess не видно на ftp, видимо он закрыт
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.