Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2018, 14:19   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Очистка кэша у посетителя сайта

Всем снова драсьте.
Нарисовалась такая вот картина маслом ...
Иногда бывает необходимо ставить сайт "на парковку", и я отправляю посетителю информацию о том, что "на сайте ведутся технические работы бла-бла-бла".
И заметил такую вещь: когда я прекращаю эти самые технические работы (читай перестаю слать 503 и инфу о тех-работах) - некоторое время как у меня, так и у других моих коллег-знакомых-друзей продолжает висеть эта картинка о технических работах какое то время.

Скорее всего я имею дело с этим вашим кэшем, и негоже писать на странице с информацией о технических работах просьбу нажимать Ctrl+F5.
Что уж там, некоторые личности из моего окружения знают что такое клавиатура только в общих чертах (панель с кнопочками), и до комбинаций там как до Сиднея на лошади.

Собственно, что вы можете мне посоветовать ради исправления этой ситуации ?
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 24.09.2018, 14:24   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

На 503 отправлять заголовки о не кэшировании.
p51x вне форума Ответить с цитированием
Старый 24.09.2018, 22:09   #3
Ottava
Форумчанин
 
Регистрация: 05.09.2017
Сообщений: 157
По умолчанию

1. заголовки кэширования. Из технической документации (то, что выше написал p51x):
Цитата:
ответ сервера с http-кодом 503 Service Unavailable должен использоваться для временных условий и Retry-After: HTTP-заголовок должен, если возможно, содержать предполагаемое время до восстановления сервиса. Веб-мастер также должен позаботиться о заголовках, связанных с кэшем, которые отправляются вместе с этим ответом, так как эти ответы, связанные с временными условиями, обычно не должны кэшироваться.
Посмотрите на Хабре про заголовки кэширования на стороне клиента.


2. Некоторые браузеры (замечены Хром и FF) чихают на заголовки кэширования, включая заголовки управления кэшем Last-Modified и Etag. И на короткое время кэширует любые ответы сервера.

Такое их "нехорошее" поведение можно победить яваскриптом. На вашу страничку "Идут технические работы" подключить яваскрипт перезагрузки страницы. Например, на jquery по таймеру периодически обращаться к серверу и если он отвечает не 503 а 200 OK то делать перезагрузку документа по текущему URL: location.reload(true) (true - документ перезагружается всегда с сервера). Или даже делать location.replace(url)


3. Некоторые интернет-провайдеры принудительно кэшируют трафик пользователей. Чтобы победить таких, приходится добавлять к URL ничего не значащие параметры типа ?dummy=12345, где 12345 всегда разное. Таким же способом предотвращают кэширование яваскриптов, наверняка видели в html-коде:
<script src="/js/script.js?1273455236"></script>
Безопасность с Content Security Policy

Последний раз редактировалось Ottava; 24.09.2018 в 22:12.
Ottava вне форума Ответить с цитированием
Старый 25.09.2018, 17:24   #4
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Ottava Посмотреть сообщение
ответ сервера с http-кодом 503 Service Unavailable должен использоваться для временных условий и Retry-After: HTTP-заголовок должен, если возможно, содержать предполагаемое время до восстановления сервиса. Веб-мастер также должен позаботиться о заголовках, связанных с кэшем, которые отправляются вместе с этим ответом, так как эти ответы, связанные с временными условиями, обычно не должны кэшироваться.
Retry-After у меня стоял изначально, на счёт заголовков о не-кэшировании я тогда ещё не думал.
Всё остальное (про браузеры, чихающие на эти заголовки) пока что меня не сильно беспокоят.

Однако стоит заметить, провайдеры мобильных интернетов часто на всякие коды ошибок вроде 404/410/500/503 и прочие отправляют пользователю свои странички со своей информацией об ошибке. Это иногда вызывает проблемы, когда например надо отправить 410 но следом кидать данные из разряда "всё нормально"; у меня была именно такая проблема, когда индекс гугла нужно было почистить от динамических страниц (25 000), я по определённым условиям вешал 410, и следом отправлял данные страницы. А Киевстару было плевать на эти данные - 410 же.
Потом я настроил фильтры юзерагентов, robots.txt и ещё что то там, и определённым агентам отправляю 410, уже три месяца проблем не наблюдается.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 26.09.2018, 14:51   #5
Ottava
Форумчанин
 
Регистрация: 05.09.2017
Сообщений: 157
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Однако стоит заметить, провайдеры мобильных интернетов часто на всякие коды ошибок вроде 404/410/500/503 и прочие отправляют пользователю свои странички со своей информацией об ошибке.
Эти разбойники ещё и свою рекламу вешают на такие странички.

Я замечал, что некоторые провайдеры могут до недели полностью кэшировать ответы сайтов, включая все http-заголовки. Такое поведение провайдеров непобедимо, они отправляют пользователям свои заголовки, я не представляю как можно вмешаться в этот процесс. Разве что замутить на ajax принудительный переход на новый url, которого ещё нет в кэше провайдера. Но надо быть аккуратным с поисковыми системами, чтобы они не наиндексировали дублей страниц.
Безопасность с Content Security Policy

Последний раз редактировалось Ottava; 26.09.2018 в 14:54.
Ottava вне форума Ответить с цитированием
Старый 26.09.2018, 19:29   #6
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Ottava Посмотреть сообщение
чтобы они не наиндексировали дублей страниц
Для этого придумали link rel canonical.
У меня на сайте ЧПУ ведёт себя немного странно, и под него пришлось составлять таблицу канонических ссылок с привязкой к SEO-URL, и в header.tpl искать по приоритету, если есть нужный SEO-URL, но адрес не совдатает с привязанной ссылкой - на морду отправляется
Цитата:
<link rel="canonical" href="{привязанная ссылка}"/>
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приветствие посетителя по имени Иляс Общие вопросы Web 6 22.08.2017 14:33
Подтверждение местоположения посетителя mrdemkin JavaScript, Ajax 1 04.04.2015 19:21
Запись ip посетителя в mysql Пиу Пиуу PHP 6 27.03.2015 09:53
Как узнать работает ли в браузере посетителя javascript? Arassir JavaScript, Ajax 2 08.01.2011 14:34
Можно-ли массштабировать изображения на сайте подстраиваясь под разрешение посетителя? maagalex HTML и CSS 22 20.04.2010 18:13