Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как правильно вернуть статус 304?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
DlTA
Отправлено: 14 Марта, 2012 - 22:26:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




суть проблемы: некоторые изображения возвращаются не из папки, а скриптами, хотелось бы чтоб скрипты не делали ненужной работы, а именно если можно возвращали статус 304 и не возвращали лишний раз изображение

так вот как правильно проверить что щас надо вернуть браузеру, изображение или 304?
 
 Top
LIME
Отправлено: 14 Марта, 2012 - 22:33:55
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




для seo хорошо чтобы скрипт не перенаправлял
лучше чтобы получал файл_гет_контент картинки, добавлял заголовок и выдавал картинку за свою
 
 Top
OrmaJever Модератор
Отправлено: 14 Марта, 2012 - 22:34:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




DlTA пишет:
так вот как правильно проверить что щас надо вернуть браузеру, изображение или 304?

У меня такой же вопрос. По какому критерию вы решили так делить? Мальчика картинку, девочкам ошибку или как?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
LIME
Отправлено: 14 Марта, 2012 - 22:46:45
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




а если seo не важно то в тег img атрибут src можно положить адрес обработчика который пошлет хидер с локэйшн нужной картинки
если я правильно понял
 
 Top
DlTA
Отправлено: 14 Марта, 2012 - 22:57:02
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




OrmaJever пишет:
У меня такой же вопрос. По какому критерию вы решили так делить? Мальчика картинку, девочкам ошибку или как?

чет вы не то говорите

http://www.xpro.su/archives/82 пишет:
В случае если страница не изменялась, существует возможность выдать только заголовок со статусом 304 и тем самым сэкономить траффик, а в ряде случаев и разгрузить сервер за счет того, что выполнение скрипта в такой ситуации можно завершить раньше.
 
 Top
LIME
Отправлено: 14 Марта, 2012 - 22:59:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ага ясн
я подумал что ты перенаправляешь на сторонний ресурс
этот заголовок выдает веб сервер сам
не надо ничего делать
 
 Top
OrmaJever Модератор
Отправлено: 14 Марта, 2012 - 23:01:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Ну я же не ясновидящий увидеть где что в интернете написано.
Ну а если в браузере кэш выключен? Всё сайт на мусорку без картинок.
А по теме, можно зделать сесиями, изначально если сесии нет то картинка, если есть то ошибка.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DlTA
Отправлено: 14 Марта, 2012 - 23:05:14
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




OrmaJever пишет:
А по теме, можно зделать сесиями, изначально если сесии нет то картинка, если есть то ошибка.

это костыли, хотелось бы почеловечески,
определить что некая картинка может быть заменена на 304
пределить это по запросу браузера
как?
 
 Top
OrmaJever Модератор
Отправлено: 14 Марта, 2012 - 23:07:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




DlTA пишет:
пределить это по запросу браузера
как?

Страный вопрос... Ну некак.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DlTA
Отправлено: 14 Марта, 2012 - 23:16:18
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




OrmaJever пишет:
Страный вопрос... Ну некак.
почему??
пример заголовков которые при запросе к изображению:
Спойлер (Отобразить)


а вот пример когда запрашивается изображение генерируемое скриптами:
Спойлер (Отобразить)

я не пойму почему но при запросе к скрипту браузер вроде как не спрашивает о том можно ли брать контент из кеша
 
 Top
OrmaJever Модератор
Отправлено: 14 Марта, 2012 - 23:21:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




А по моему кэш работает по типу файла. Тоесть если это статический файл (картинки, html, стили) то берёт из кеша, а если динамический php, pl и подобная гадость то грузит.
Эту теорию можно проверить.
Взять файл генерирующий изображение и положить в отдельную папку
Затем перейменовать его например в file.jpg или file.png
И затем в htaccess написать правило что бы .jpg или .png файлы читались как скрипты.

Это чисто теоритический вариант. Я вобще точно не знаю как работает кэш у браузеров.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DlTA
Отправлено: 14 Марта, 2012 - 23:27:56
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




OrmaJever пишет:
Эту теорию можно проверить.

примеры ссылок к которым идет обращение:
1) http://site[dot]me/img/mark/mark-3[dot]jpg (скриптовая, не хочет кешироваться)
2) http://site[dot]me/images/mark/14[dot]jpg (реальная, кешируется)
результаты заголовков можно посмотреть в моем предыдущем сообщении
тоесть для браузера внешне ссылки выглядят одинаково.
 
 Top
OrmaJever Модератор
Отправлено: 14 Марта, 2012 - 23:30:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Помоему вот этот заголовок
CODE (htmlphp):
скопировать код в буфер обмена
  1. X-Powered-By:PHP/5.3.1

палит всю контору. И убрать его скорее всего не выйдет.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DlTA
Отправлено: 14 Марта, 2012 - 23:45:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




отвечу на свой же вопрос
вот пример кода:
PHP:
скопировать код в буфер обмена
  1. header("Expires: " . gmdate("D, d M Y H:i:s",time()+10000) . " GMT");
  2. header("Last-Modified: " . gmdate("D, d M Y H:i:s",time()) . " GMT");
  3. if((time()-strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']))<100){
  4.   header('HTTP/1.1 304 Not Modified');
  5.   // exit(); // можно добавить
  6. }

все дело в первых двух заголовках
Expires - до какого считать контент валидным
Last-Modified - последнее изменение
ну и $_SERVER['HTTP_IF_MODIFIED_SINCE'] - это в запросе браузера, уточняет что у него есть контент такой то давности
 
 Top
Мелкий Супермодератор
Отправлено: 15 Марта, 2012 - 07:32:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




OrmaJever пишет:
палит всю контору. И убрать его скорее всего не выйдет.

Выйдет-выйдет.
Директива expose_php конфига.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB