Как сделать страничку "некешируемой"???
От: __Vovan_H__ Россия  
Дата: 11.03.05 06:45
Оценка:
Я пытаюсь с пом. мета-тегов сделать так, чтоб страничка (HTML) не кешировалась..
Вот теги, которые есть в каждом HTML-документе моего веб-интерфейса:

  <META HTTP-EQUIV="Cache-Control" content="no-cache">
  <meta http-equiv="Pragma" content="no-cache">
  <meta http-equiv="Cache-Control" content="no-store">
  <META HTTP-EQUIV="expires" CONTENT="0">


Напихал, как говорится, все, что нашел по этому вопросу

Однако эксплорер все-таки кеширует странички-результаты запросов
(так и не понял всегда или иногда) и возникает очень неприятная ситуация
когда, например, мне из базы нужно запросить новое уникальное значение,
а достается результат предыдущего запроса, из которого мне достается
предыдущее "уникальное" число..
Засада..

Как с этим бороться..

Зараннее спасибо,
Вован.
Re: Как сделать страничку "некешируемой"???
От: S. Россия http://www.el-work.nm.ru
Дата: 11.03.05 06:55
Оценка:
Здравствуйте, __Vovan_H__, Вы писали:

__V>Я пытаюсь с пом. мета-тегов сделать так, чтоб страничка (HTML) не кешировалась..

__V>Вот теги, которые есть в каждом HTML-документе моего веб-интерфейса:

__V>
__V>  <META HTTP-EQUIV="Cache-Control" content="no-cache">
__V>  <meta http-equiv="Pragma" content="no-cache">
__V>  <meta http-equiv="Cache-Control" content="no-store">
__V>  <META HTTP-EQUIV="expires" CONTENT="0">
__V>


__V>Напихал, как говорится, все, что нашел по этому вопросу :)


__V>Однако эксплорер все-таки кеширует странички-результаты запросов

__V>(так и не понял всегда или иногда) и возникает очень неприятная ситуация
__V>когда, например, мне из базы нужно запросить новое уникальное значение,
__V>а достается результат предыдущего запроса, из которого мне достается
__V>предыдущее "уникальное" число..
__V>Засада..

__V>Как с этим бороться..


__V>Зараннее спасибо,

__V>Вован.

Как я понял из выше написаного то работать приходиться с базами
а значит страницы формируются динаимческим образом, значит есть возможность
формировать страницы таким образом чтобы в адресе присутствовал уникальный параметр
ну наподобии как это делается у банеров, тогда точно страница кешироваться не будет!
Re: Как сделать страничку "некешируемой"???
От: Plague Россия  
Дата: 11.03.05 07:07
Оценка: 1 (1)
__V>Как с этим бороться..

По этому поводу конкретно можно почитать на see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html.

Я не знаю на чем вы пишете, но в сервлетах функция выглядит так:

    // вызываем в начале сервлета, если надо чтоб не кэшировалась страница
    protected void preventCaching(HttpServletRequest request, HttpServletResponse response)
    {
        String protocol = request.getProtocol();
        if ("HTTP/1.0".equalsIgnoreCase(protocol)) 
            response.setHeader("Pragma", "no-cache"); // устанавливаем в заголовке ответа - не кэшировать
        else
            if ("HTTP/1.1".equalsIgnoreCase(protocol))
                response.setHeader("Cache-Control", "no-cache"); // возможно ли "no-store"?
        response.setDateHeader("Expires", 0); // время жизни в 0
    }

где:
request — параметры запроса
response — параметры ответа
Re: Как сделать страничку "некешируемой"???
От: I_one  
Дата: 11.03.05 07:43
Оценка:
Просто в ссылках на страницах добавляй знак вопроса, по идее Explorer не должен делать кеш ибо страница динамическая .. )) .. так же образом работает кеширующий прокси squid
Re[2]: Как сделать страничку "некешируемой"???
От: __Vovan_H__ Россия  
Дата: 11.03.05 08:04
Оценка:
Здравствуйте, S., Вы писали:

S.>Здравствуйте, __Vovan_H__, Вы писали:


__V>>Я пытаюсь с пом. мета-тегов сделать так, чтоб страничка (HTML) не кешировалась..

__V>>Вот теги, которые есть в каждом HTML-документе моего веб-интерфейса:

__V>>
__V>>  <META HTTP-EQUIV="Cache-Control" content="no-cache">
__V>>  <meta http-equiv="Pragma" content="no-cache">
__V>>  <meta http-equiv="Cache-Control" content="no-store">
__V>>  <META HTTP-EQUIV="expires" CONTENT="0">
__V>>


__V>>Напихал, как говорится, все, что нашел по этому вопросу


__V>>Однако эксплорер все-таки кеширует странички-результаты запросов

__V>>(так и не понял всегда или иногда) и возникает очень неприятная ситуация
__V>>когда, например, мне из базы нужно запросить новое уникальное значение,
__V>>а достается результат предыдущего запроса, из которого мне достается
__V>>предыдущее "уникальное" число..
__V>>Засада..

__V>>Как с этим бороться..


__V>>Зараннее спасибо,

__V>>Вован.

S.>Как я понял из выше написаного то работать приходиться с базами

S.>а значит страницы формируются динаимческим образом, значит есть возможность
S.>формировать страницы таким образом чтобы в адресе присутствовал уникальный параметр
S.>ну наподобии как это делается у банеров, тогда точно страница кешироваться не будет!

а есть ли в ява-скрипте какой-нить генератор случайных величин?
Re[2]: Как сделать страничку "некешируемой"???
От: __Vovan_H__ Россия  
Дата: 11.03.05 08:05
Оценка:
Здравствуйте, Plague, Вы писали:

__V>>Как с этим бороться..


P>По этому поводу конкретно можно почитать на see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html.


P>Я не знаю на чем вы пишете, но в сервлетах функция выглядит так:


P>
P>    // вызываем в начале сервлета, если надо чтоб не кэшировалась страница
P>    protected void preventCaching(HttpServletRequest request, HttpServletResponse response)
P>    {
P>        String protocol = request.getProtocol();
P>        if ("HTTP/1.0".equalsIgnoreCase(protocol)) 
P>            response.setHeader("Pragma", "no-cache"); // устанавливаем в заголовке ответа - не кэшировать
P>        else
P>            if ("HTTP/1.1".equalsIgnoreCase(protocol))
P>                response.setHeader("Cache-Control", "no-cache"); // возможно ли "no-store"?
P>        response.setDateHeader("Expires", 0); // время жизни в 0
P>    }
P>

P>где:
P>request — параметры запроса
P>response — параметры ответа

..по ходу я тоже и делаю с пом. мета-тегов, тока строчка с "но-сторе" перезаписывает "но-кеш"..
попробую изменить.
Re[3]: Как сделать страничку "некешируемой"???
От: DrZubr Беларусь  
Дата: 11.03.05 09:43
Оценка:
Здравствуйте, __Vovan_H__, Вы писали:

__V>..по ходу я тоже и делаю с пом. мета-тегов, тока строчка с "но-сторе" перезаписывает "но-кеш"..

__V>попробую изменить.

Неее... Мета-теги и http-заголовки — это две разные песни До мета-тегов ослик может и не добраться, если решит взять страничку из кэша Поэтому лучше это делать в заголовках.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
ICQ [168117153]
Re[3]: Как сделать страничку "некешируемой"???
От: DrZubr Беларусь  
Дата: 11.03.05 09:43
Оценка: 1 (1)
Здравствуйте, __Vovan_H__, Вы писали:

__V> а есть ли в ява-скрипте какой-нить генератор случайных величин?


Есессно:
Math.random()

Чтобы получить целый рандом:
Math.round(Math.random()*100000000)
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
ICQ [168117153]
Re[4]: Как сделать страничку "некешируемой"???
От: andik  
Дата: 11.03.05 09:59
Оценка: 1 (1)
Здравствуйте, DrZubr, Вы писали:

DZ>Здравствуйте, __Vovan_H__, Вы писали:


__V>> а есть ли в ява-скрипте какой-нить генератор случайных величин?


DZ>Есессно:

DZ>Math.random()

DZ>Чтобы получить целый рандом:

DZ>Math.round(Math.random()*100000000)

какой вопрос, такой ответ . Думаю для случая __Vovan_H__
лучше использоавать
escape(new Date())

но, конечно, лучше это все делать через http заголовки
... << RSDN@Home 1.1.3 stable >>
Re[2]: Как сделать страничку "некешируемой"???
От: __Vovan_H__ Россия  
Дата: 11.03.05 12:21
Оценка:
Здравствуйте, Plague, Вы писали:

__V>>Как с этим бороться..


P>По этому поводу конкретно можно почитать на see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html.


P>Я не знаю на чем вы пишете, но в сервлетах функция выглядит так:


P>
P>    // вызываем в начале сервлета, если надо чтоб не кэшировалась страница
P>    protected void preventCaching(HttpServletRequest request, HttpServletResponse response)
P>    {
P>        String protocol = request.getProtocol();
P>        if ("HTTP/1.0".equalsIgnoreCase(protocol)) 
P>            response.setHeader("Pragma", "no-cache"); // устанавливаем в заголовке ответа - не кэшировать
P>        else
P>            if ("HTTP/1.1".equalsIgnoreCase(protocol))
P>                response.setHeader("Cache-Control", "no-cache"); // возможно ли "no-store"?
P>        response.setDateHeader("Expires", 0); // время жизни в 0
P>    }
P>

P>где:
P>request — параметры запроса
P>response — параметры ответа

Пока сделал через мета-теги (убрал no-store, оставил только no-cache и вроде все заработало..)

Но зачем тогда теги придуманы, если они не гарантируют результат,
для достижения которого они предназначены??
Re: Как сделать страничку "некешируемой"???
От: Other Sam Россия  
Дата: 12.03.05 18:23
Оценка:
Попробуй ничего не добавлять и провести эксперемент. (Единственное cache-control:private — это в asp само добавляется, пусть так и будет, чтобы прокси по пути не кэшировали).

Сделай страничку, в которой сделай <a href="..."> на саму себя, и потыкай мышкой. И определи будет ли что-нибудь кэшироваться.

IE не нужно пинать, он сам отлично справляется с кэшированием, и с некешированием.
Re: Как сделать страничку "некешируемой"???
От: marx paul Германия Провести онлайн-опрос
Дата: 12.03.05 23:20
Оценка:
Здравствуйте, __Vovan_H__, Вы писали:


__V>Как с этим бороться..


здесь
Автор: marx paul
Дата: 09.07.04
:

для IE помогает добавление


<META HTTP-EQUIV="Cache-Control" CONTENT="must-revalidate, post-check=0, pre-check=0">

Провести онлайн-опрос
Online-Umfrage erstellen
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.