Представим ситуацию: настроено кэширование на стороне сервера, доступа к сбросу серверного кэша нет. Как получить версию веб-страницы в обход серверного кэша? Кстати, именно такой вопрос мне однажды задали на собеседовании.
Сброс кэша браузера, очистка cookies — подобные манипуляции на стороне клиента хорошо знакомы каждому, кто занимается разработкой и тестированием веб-приложений и веб-сайтов. Также CMS (content management systems) и e-commerce-платформы обычно предоставляют в админке средства для сброса серверного кэша. Но можно ли обойти серверный кэш, если нет доступа к админке?
Оказывается, это возможно. Достаточно добавить GET-параметр в URL — путь изменится, и браузер запросит файл в обход серверного кэша.
Например:
https://www.google.com/ => https://www.google.com/?1
Если URL уже содержит параметры, можно добавить «фейковый» параметр:
https://www.google.com/search?q=hello => https://www.google.com/search?q=hello&1=1
Этот способ будет работать не всегда. Надо учитывать следующие ограничения:
- Если на сервере неправильно настроена балансировка нагрузки, то и ответ сервера тоже может быть неправильным.
- Если изменения, которые нужно увидеть, находятся не в контенте страницы, а в файлах, которые загружаются страницей (js, css, iframe, картинки и т.д.), то получить их измененные копии будет непросто.
- При переходе по каждой ссылке нужно вновь добавлять GET-параметр, чтобы получить измененные копии этих страниц.
- При «жесткой» блокировке XSS (cross-site scripting) все непредусмотренные или не прошедшие валидацию GET-параметры могут перенаправляться на 404-ю страницу.
Больше можно почитать в статье на Highload или в ответах на Stack Overflow.
Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: