Comments 58
Expires, ETag?
Модернизировал test.php:
header("Cache-control: public");
header("Cache-control: max-age=1800");
header("Expires: Thu, 01 Dec 2010 16:00:00 GMT");
header("Etag: \"zz\"");
Не кэширует
header("Cache-control: public");
header("Cache-control: max-age=1800");
header("Expires: Thu, 01 Dec 2010 16:00:00 GMT");
header("Etag: \"zz\"");
Не кэширует
В опере в настройках кэширования стоит "Check documents: Always"?
Стояло. Поставил час. Не кэширует.
Замечу, если тот же файл подключить как скрипт то он кэшируется нормально
Замечу, если тот же файл подключить как скрипт то он кэшируется нормально
По-моему, ещё перезагрузиться надо. Ну и в пхп внедрить код проверки If-None-Match и If-Modfied-Since. А то она, вероятно, в первый раз заголовкам не очень верит, а когда получает "403, ничё не поменялось", усмиряет свой пыл.
Если не работает напрямую очевидно, что нужно использовать workaround. JsHttpRequest от котерова или самому сделать аналогичный механизм, через фреймы, например. Т.е. изменить контекст, в котором происходит запрос - запрашивали данные, а теперь будем запрашивать файлы. Полагаю что опера попросту "не знает" как кэшировать нечто, что не является файлами или страницами.
http://dklab.ru/lib/JsHttpRequest/
http://dklab.ru/lib/JsHttpRequest/
Спасибо, ваш коментарий как раз в тему. Я только что начал делать через фрейм. А в будущем попробую хранилище подключить, чтобы кэшировалось намертво. Надеюсь, к этотму моменту это самое хранилище в опере появится.
Пожалуйста :-)
Кстати, а как обычно используют ифрейм для загрузки для эмуляции ajax? Если написать нечно вроде то у меня IE предлагает сохранить этот файл на диск ))
Можно конечно переименовать файл в .txt
Тогда content.window.document.body будет содержать текст файла котороый нам нужен, но какой-то это некрасивый вариант. Тогда лучше уж использовать флэш для загрузки скриптов. Там кстати и хранилище просто можно задействовать
Можно конечно переименовать файл в .txt
Тогда content.window.document.body будет содержать текст файла котороый нам нужен, но какой-то это некрасивый вариант. Тогда лучше уж использовать флэш для загрузки скриптов. Там кстати и хранилище просто можно задействовать
* нечно вроде iframe src='test.js'
Отдавай правильно header("Content-Type: text/javascript"); Видимо апача отдаёт хидер неправильно или не может определить тип отдаваемого контента и выставляет его octet-stream.
А вообще - просмотрщики всяких хидеров маст хэв.
Для IE это iehttpheaders, для FF можно посмотреть как в FireBug'е, так и в Tamper Data
А вообще - просмотрщики всяких хидеров маст хэв.
Для IE это iehttpheaders, для FF можно посмотреть как в FireBug'е, так и в Tamper Data
Кстати может быть тогда и опера начнёт кэшировать, если контент-тайп отдашь правильно и, например ещё E-Tag. Рекомендую всё же поставить просмотрщик хидеров и посмотреть вживую как происходит кэширование, какие заголовки учавствуют.
У меня файрбаг стоит, но ответ на вопрос "как происходит кэширование в Опере" от этого ближе не становится)
Кстати, а можно выставить хэдеры для статического контента, через .htaccess например?
Кстати, а можно выставить хэдеры для статического контента, через .htaccess например?
Значит поставь Tamper Data. И посмотри, какие заголовки идут когда отдаются картинки, например. Можно для разнообразия посмотреть на других серверах :-). Там дохуя много заголовков всяких для кэширования есть.
через .htaccess думаю можно извернуться, на основании имени файла выставить хидеры. Вроде в апаче есть mod_header или что-то такое, в комплекте с location или files можно попробовать. Ещё там есть нативная возможность устанавливать заголовки, mime.types в конфиге, но он работает от расширения файла.
Но по мне так легче отдать из скрипта - хочешь будет картинка, хочешь JS хочешь XML :-).
через .htaccess думаю можно извернуться, на основании имени файла выставить хидеры. Вроде в апаче есть mod_header или что-то такое, в комплекте с location или files можно попробовать. Ещё там есть нативная возможность устанавливать заголовки, mime.types в конфиге, но он работает от расширения файла.
Но по мне так легче отдать из скрипта - хочешь будет картинка, хочешь JS хочешь XML :-).
А Dragonfly у вас на Опере не стоит?
www.opera.com/products/dragonfly/
www.opera.com/products/dragonfly/
слушай, а за что тебя забанили тогда? :)
Вот уж точно не знаю, это же не я нажал кнопку "бан" на своём аккаунте :-). К тому же, согласно внутреннему кодексу владельцев хабра нужно употреблять не слово "бан" - ведь сообщения никакого не выдаётся, а нечто вроде "невозможность использования аккаунта его владельцем".
Аккаунт наверняка никто не банил, как и посты не удаляются, а делаются "недоступными для общего доступа" :-).
И вообще, друг - будь осторожен, действия денискина обсуждать не стоит, особенно если дорожишь свободным доступом к своему аккаунту на самоуправляемом демократическом ресурсе, который тебе не принадлежит, т.к. тем самым ты нарушаешь его правила.
Аккаунт наверняка никто не банил, как и посты не удаляются, а делаются "недоступными для общего доступа" :-).
И вообще, друг - будь осторожен, действия денискина обсуждать не стоит, особенно если дорожишь свободным доступом к своему аккаунту на самоуправляемом демократическом ресурсе, который тебе не принадлежит, т.к. тем самым ты нарушаешь его правила.
Попробуй: "Cache-Control: no-cache"
Немного не в тему, но советую поставить последний снапшот - есть полезные исправления.
Особенно обработка форм, таких как вставка ника в ответ и цитат (были проблемы с кодировкой)
Особенно обработка форм, таких как вставка ника в ответ и цитат (были проблемы с кодировкой)
В приведённом Вами варианте число, возвращаемое скриптом, всегда будет меняться. Дело в том, что Опера просто не узнает из возвращаемых скриптом заголовков, что контент не изменился. Попробуйте сделать в скрипте примерно следующее:
$etag = (isset($_SERVER['HTTP_IF_NONE_MATCH'])) ? $_SERVER['HTTP_IF_NONE_MATCH'] : "";
if ($etag !== "") {
header("HTTP/1.1 304 Not Modified");
header('Cache-Control: max-age=10800');
} else {
$etag = "abcdef";
}
header('Etag: '.$etag);
$etag = (isset($_SERVER['HTTP_IF_NONE_MATCH'])) ? $_SERVER['HTTP_IF_NONE_MATCH'] : "";
if ($etag !== "") {
header("HTTP/1.1 304 Not Modified");
header('Cache-Control: max-age=10800');
} else {
$etag = "abcdef";
}
header('Etag: '.$etag);
Особенно страницы хорошо кеширует..... убейте оперу
хы.. ну вот уже -1
А что вы хотели? Мне жена говорит в таких случаях: "прекрати говорить нелогично!" )
Ну что я могу сказать если опера е*анутый браузер? Я, конечно, ничего не имею против вас лично и т.п. высказал только своё мнение т.к. кеширование в опере епанутое это давно известно. Всё что не нужно она кеширует. Попробуйте например в WHM от CPanel поработать в опере сами убедитесь.
Решение проблем в опере примерно похоже на решение проблем в IE, постоянные баги когда в FF всё нормально. И приходиться решать различные проблемы чтобы любители таких кривых браузеров нормально себя чувствовали. Ах, я же совсем забыл что опера у нас работает по различным стандартам - а остальные браузеры не по стандартам. Тупость. Нет идеальных сайтов, скриптов, и браузер должен это понимать в 1 очередь, не всё в этом мире идеально.
Решение проблем в опере примерно похоже на решение проблем в IE, постоянные баги когда в FF всё нормально. И приходиться решать различные проблемы чтобы любители таких кривых браузеров нормально себя чувствовали. Ах, я же совсем забыл что опера у нас работает по различным стандартам - а остальные браузеры не по стандартам. Тупость. Нет идеальных сайтов, скриптов, и браузер должен это понимать в 1 очередь, не всё в этом мире идеально.
Нет идеальных сайтов, скриптов и браузеров. И разработчик должен понимать это в первую очередь, не всё этом мире идеально.
Internet Explorer 6 как раз написан по парадигме, высказанной вами в последнем предложении. Думаю, это самое наглядное опроверджение оной.
Я давно хочу задать вопрос: как научиться верстать под IE7, где об этом можно почитать? Потому что в моем опыте как раз получается, что IE6 лучше учитывает стандарты, нежели IE7 (без учета png). Например, Ie7 между width и margin отдает предпочтение margin, IE6 - width :(
пишите xhml код (в strict mode, а не quirk). ослики более-менее одинаково такой код рендерят.
пишу xhtml, но не стрикт, а transitional, но такое поведение осликов мне непонятно :(
Да, с оперой бывают проблемы. В частности в верстке результат практически всегда расходится с IE и FF.
А утверждение, что браузер должен понимать кривые сайты, можно применять лишь к незначительным отклонениям в стандартах. Надо приучать разработчиков писать правильный код/верстку.
А утверждение, что браузер должен понимать кривые сайты, можно применять лишь к незначительным отклонениям в стандартах. Надо приучать разработчиков писать правильный код/верстку.
Да но почему то чаще всего проблемы именно в IE и Опере. Да и на своём опыте не раз убеждался. Почему с FF не так? Почему FF в отличие от многих показывает нормальные страницы ошибок, имеет хорошие средства для поиска недочётов в скриптах и т.п.? Вопросов то много. Я не говорю что нужно делать сайты только под FF и не смотреть на другие браузеры. Я просто призываю пользоваться нормальным ПО. Не было бы оперы не было бы у вас такой проблемы. FF не идеальный браузер, но во всяком случае, с ним проблем во много раз меньше. "-" не забудьте поставить, ведь моё мнение не совпало с вашим. ;)
Добро пожаловать на первый круг Ада, ты довыёбывался теперь знаешь, что если ты плюнешь в сообщество, то оно утрётся. А если оно плюнет в тебя - ты утонешь.
Следующий ачивмент - набрать как можно более низкий показатель кармы.
Следующий ачивмент - набрать как можно более низкий показатель кармы.
да не бойся не утону :) в любом сообществе всегда найдутся мыслящие люди поэтому не говори за всех... и запомни я никогда не выёбываюсь как ты изволил выразиться - я ии без этого понятен, мне этого не нужно
Нифига подобного. Под оперу хороший разработчик практически ничего не доводит, гораздо больше проблем с IE7 и особенно IE6. Ну и Safari тож иногда начинает выпендриваться. С Firefox меньше всего проблем, имхо, потому, что просто на нём почти все разрабатывают. FireBug со своими плагинами и WebDeveloper Tools просто рулят, поэтому в FF проблемы решаются сразу и только потом всё тестируется в опере. Думаю, если бы разработчики писали код в опере, отлаживали его там и только потом пробовали в фф, то недовольства было бы не меньше:)
Насчёт средств для Оперы: а вы Драгонфлай пробовали?.. вон там выше ссылка ----^
Ну так, просто интересно :)
Ну так, просто интересно :)
Насчёт средств для Оперы: а вы Драгонфлай пробовали?.. вон там выше ссылка ----^
Ну так, просто интересно :)
Ну так, просто интересно :)
А не могло быть такого, что Опера стала считать AJAX запросы по умолчанию POST? Если вы конечно не указываете тип запроса.
P.S. Интересно, тролли будут заминусовать за то, что не проверил сам или нет?
P.S. Интересно, тролли будут заминусовать за то, что не проверил сам или нет?
Вероятно, проще пользоваться хорошим браузером.
Можно попробовать спросить на форуме разработчиков. Может, это како-то баг.
Хотя, возможно это вовсе не баг, а на недофича. Т.е. так и задумано — AJAX не кэшировать.
Хотя, возможно это вовсе не баг, а на недофича. Т.е. так и задумано — AJAX не кэшировать.
Интересно, автор нашёл ответ на свой вопрос? :)
Sign up to leave a comment.
Опера 9.51 не кэширует ajax?