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
Форумы портала PHP.SU :: Версия для печати :: как правильно вернуть статус 304?
Форумы портала PHP.SU » » HTTP и PHP » как правильно вернуть статус 304?

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

1. DlTA - 14 Марта, 2012 - 22:26:55 - перейти к сообщению
суть проблемы: некоторые изображения возвращаются не из папки, а скриптами, хотелось бы чтоб скрипты не делали ненужной работы, а именно если можно возвращали статус 304 и не возвращали лишний раз изображение

так вот как правильно проверить что щас надо вернуть браузеру, изображение или 304?
2. LIME - 14 Марта, 2012 - 22:33:55 - перейти к сообщению
для seo хорошо чтобы скрипт не перенаправлял
лучше чтобы получал файл_гет_контент картинки, добавлял заголовок и выдавал картинку за свою
3. OrmaJever - 14 Марта, 2012 - 22:34:35 - перейти к сообщению
DlTA пишет:
так вот как правильно проверить что щас надо вернуть браузеру, изображение или 304?

У меня такой же вопрос. По какому критерию вы решили так делить? Мальчика картинку, девочкам ошибку или как?
4. LIME - 14 Марта, 2012 - 22:46:45 - перейти к сообщению
а если seo не важно то в тег img атрибут src можно положить адрес обработчика который пошлет хидер с локэйшн нужной картинки
если я правильно понял
5. DlTA - 14 Марта, 2012 - 22:57:02 - перейти к сообщению
OrmaJever пишет:
У меня такой же вопрос. По какому критерию вы решили так делить? Мальчика картинку, девочкам ошибку или как?

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

http://www.xpro.su/archives/82 пишет:
В случае если страница не изменялась, существует возможность выдать только заголовок со статусом 304 и тем самым сэкономить траффик, а в ряде случаев и разгрузить сервер за счет того, что выполнение скрипта в такой ситуации можно завершить раньше.
6. LIME - 14 Марта, 2012 - 22:59:20 - перейти к сообщению
ага ясн
я подумал что ты перенаправляешь на сторонний ресурс
этот заголовок выдает веб сервер сам
не надо ничего делать
7. OrmaJever - 14 Марта, 2012 - 23:01:26 - перейти к сообщению
Ну я же не ясновидящий увидеть где что в интернете написано.
Ну а если в браузере кэш выключен? Всё сайт на мусорку без картинок.
А по теме, можно зделать сесиями, изначально если сесии нет то картинка, если есть то ошибка.
8. DlTA - 14 Марта, 2012 - 23:05:14 - перейти к сообщению
OrmaJever пишет:
А по теме, можно зделать сесиями, изначально если сесии нет то картинка, если есть то ошибка.

это костыли, хотелось бы почеловечески,
определить что некая картинка может быть заменена на 304
пределить это по запросу браузера
как?
9. OrmaJever - 14 Марта, 2012 - 23:07:02 - перейти к сообщению
DlTA пишет:
пределить это по запросу браузера
как?

Страный вопрос... Ну некак.
10. DlTA - 14 Марта, 2012 - 23:16:18 - перейти к сообщению
OrmaJever пишет:
Страный вопрос... Ну некак.
почему??
пример заголовков которые при запросе к изображению:
Спойлер (Отобразить)


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

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

Это чисто теоритический вариант. Я вобще точно не знаю как работает кэш у браузеров.
12. DlTA - 14 Марта, 2012 - 23:27:56 - перейти к сообщению
OrmaJever пишет:
Эту теорию можно проверить.

примеры ссылок к которым идет обращение:
1) http://site[dot]me/img/mark/mark-3[dot]jpg (скриптовая, не хочет кешироваться)
2) http://site[dot]me/images/mark/14[dot]jpg (реальная, кешируется)
результаты заголовков можно посмотреть в моем предыдущем сообщении
тоесть для браузера внешне ссылки выглядят одинаково.
13. OrmaJever - 14 Марта, 2012 - 23:30:22 - перейти к сообщению
Помоему вот этот заголовок
CODE (htmlphp):
скопировать код в буфер обмена
  1. X-Powered-By:PHP/5.3.1

палит всю контору. И убрать его скорее всего не выйдет.
14. DlTA - 14 Марта, 2012 - 23:45:55 - перейти к сообщению
отвечу на свой же вопрос
вот пример кода:
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'] - это в запросе браузера, уточняет что у него есть контент такой то давности
15. Мелкий - 15 Марта, 2012 - 07:32:08 - перейти к сообщению
OrmaJever пишет:
палит всю контору. И убрать его скорее всего не выйдет.

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

 

Powered by ExBB FM 1.0 RC1