Выборочное кеширование в браузере (т.е. пончик) на основе тега html / прочее no ASP? - PullRequest
0 голосов
/ 11 июля 2019
  • Предположим, я не использую библиотеку или фреймворк, просто обычный HTML5, CSS3 и ES6, который мне предоставляет каждый современный браузер.

  • Есть ли что-то похожее на ASPКэширование дырки от бублика, где я могу указать браузеру клиента не кэшировать определенный html на странице?

  • Извините, если это выглядит как дубликат, но я искал здесь и в других местах безрезультатнодля этого очень конкретного вопроса.

  • Скажем, у меня есть веб-форма, которая генерирует случайный идентификатор, используемый для проверки отправки формы.Этот идентификатор изменяется каждый раз, когда изменяется структура формы.

  • Клиент, который уже посетил эту страницу, может загрузить веб-форму со старым кэшированным идентификатором, который вызывает ошибки проверки при отправке.

  • Я знаю, что с изображениями я могу сделать это, добавив в их URL случайные строки запроса.

  • Я бы предпочел запретить браузерувозможно ли когда-нибудь кэшировать эту часть html или на основе класса или идентификатора элемента или другого?

1 Ответ

1 голос
/ 11 июля 2019

Из того, что я могу сказать, «кеширование дырки от бублика» в ASP относится к кешированию на стороне сервера. Сервер повторно использует дословно «хлебную» часть пончика в запросах и заново генерирует «дырочную» часть для каждого запроса.

У клиента (браузера) нет такого механизма, чтобы отличать «хлеб» от «дыры». Он кэшируется на уровне запроса, основываясь на заголовках кэша, отправленных сервером. Таким образом, если срок жизни кэша для https://example.com/page-with-form составляет десять минут, но случайный идентификатор формы действителен только в течение одной минуты, пользователь, скорее всего, столкнется с ошибкой, даже если он обновит страницу через девять минут и 59 секунд .

Имейте в виду, что пользователь может также столкнуться с ошибкой, если он уйдет на час, вернется и нажмет "отправить" в форме.

Одним из подходов было бы отключение кэширования на стороне клиента путем установки заголовков без кэширования в ответе сервера.

Другой вариант: разрешить кэширование HTML, но использовать JS для случайного повторного заполнения случайного идентификатора (я не знаю структуру безопасности вашего приложения, поэтому я не не знаю, если это побеждает цель случайного идентификатора).

...