+  HandyCache форум
|-+  Главная категория» Новые предложения» Кэширование POST-запросов
Имя пользователя:
Пароль:
Страниц: [1]   Вниз
  Отправить эту тему    Печать  
Автор Тема: Кэширование POST-запросов  (Прочитано 14413 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« : 27 января 2007, 15:36:47 »

В ToDo есть предложение: Добавить опцию "Игнорировать галку ''"Работать автономно"'' для POST-запросов". Иначе, формы отсылают запрос в никуда.

Предлагаю подумать пошире - как организовать кэширование POST-запросов.

Например, встретив POST-запрос, так же как и для GET-запроса с параметрами создаем папку с названием, взятым из URL в его заголовке. Затем возникает проблема установления взаимно однозначного соответствия тела POST-запроса с наименованием файла в кэше, куда мы хотим его записать.
Как предложил Сергей, в качестве имени файла можно брать контрольную сумму тела POST-запроса.

Давайте обсудим...



! Можно реализовать с помощью расширения!
« Последнее редактирование: 08 марта 2011, 22:33:29 от DenZzz » Сообщить модератору   Записан
Дем
Постоялец
***

Репутация: +6/-3
Offline Offline

Сообщений: 167



« Ответ #1 : 27 января 2007, 20:52:05 »

Альтернативный вариант - "переделать" POST-запрос в GET-запрос (добавить его содержимое в УРЛ, но с иными разделителями вместо ? и & )
Есть плюсы (можно обработать правилами, выкинув незначашие переменные, типа текущего времени) и минусы (м.б. бинарный контент)
Сообщить модератору   Записан
NothingAnother
Beta tester
*****

Репутация: +7/-2
Offline Offline

Сообщений: 434

Spoiler


« Ответ #2 : 27 января 2007, 21:11:09 »

"переделать" POST-запрос в GET-запрос
Переделать-то можно, но как знать, что любой сервер адекватно на это отреагирует?
Сообщить модератору   Записан

Мы тоже не всего читали Шнитке!..
© В. Вишневский
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #3 : 27 января 2007, 22:08:50 »

Дем
Цитировать
можно обработать правилами, выкинув незначашие переменные, типа текущего времени
Можно разве выделить какие-то общеупотребительные правила построения тела POST-запроса? Я особо пристально с такими запросами не практиковался, но по-моему, каждый сервер устанавливает свои порядки.
А текущее время сервер по идее должен знать сам, для чего ему хотеть его от нас?
Думаю, придется мириться с невозможностью анализа тела запроса.
Сообщить модератору   Записан
Дем
Постоялец
***

Репутация: +6/-3
Offline Offline

Сообщений: 167



« Ответ #4 : 28 января 2007, 01:25:12 »

Цитата: NothingAnother
Переделать-то можно, но как знать, что любой сервер адекватно на это отреагирует?
Я имел в виду - только при сохранении на диск (и при последующем чтении в автономном режиме).
На сервер оно должно идти как POST.
Цитата: Михаил
Можно разве выделить какие-то общеупотребительные правила построения тела POST-запроса?
Ну вообще стандарты - они есть Улыбка
Или те же самые пары переменная=значение, или MIME, или ещё несколько считанных вариантов.
Для примера - что в POST-запросе на данный форум
topic=149&subject=Re%3A+%CA%FD%F8%E8%F0%EE%E2%E0%ED%E8%E5+POST-%E7%E0%EF%F0%EE%F1%EE%E2&icon=xx&notify=0&goback=1&num_replies=3&message=%5BQUOTE%3DNothingAnother%5D%CF%... и т.д.
« Последнее редактирование: 28 января 2007, 01:32:08 от Дем » Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #5 : 09 октября 2007, 22:01:30 »

Но я думал, что в этом случае добавляется только кэширование POST.

А зачем ты POST кэшируешь? Большинство форумов после отправки поста выдают редирект на измененную страницу, которую браузер запрашивает уже GET-методом...
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #6 : 09 октября 2007, 22:09:02 »

Большинство форумов после отправки поста выдают редирект на измененную страницу, которую браузер запрашивает уже GET-методом...
Можешь подробнее, плиз? Просто я не в курсе, что это за ситуация.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #7 : 09 октября 2007, 22:33:08 »

Можешь подробнее, плиз? Просто я не в курсе, что это за ситуация.

Посмотри в логе HC или сниффера, как отправляются посты на нашем форуме, на ру-борде и т.д.

Сначала производится отправка самого поста POST-методом:

Цитировать
09.10.2007/23:02:06 local/127.0.0.1 http://handycache.ru/component/option,com_smf/Itemid,10/action,post2/ 5 5/609 100% 1993 "302 Found"

на которую сервер отвечает редиректом "302" на измененную страницу и браузер грузит ее уже GET-методом:

Цитировать
09.10.2007/23:02:12 local/127.0.0.1 http://handycache.ru/component/option,com_smf/Itemid,10/topic,476.new/ 11436 11436/469 100% 1090 "200 OK gzip" П.13, З.1

вот ее HC и будет кэшировать! А первый ответ "302" в кэше и не нужен - ты же не будешь отправлять посты в автономке!
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #8 : 09 октября 2007, 23:01:09 »

DenZzz
Спасибо. Действительно, и в этом случае проку нет. Смысла от кэширования POST я не наблюдал и в других ситуациях: то текущее время в теле запроса влияет, то куки разные. Я, собственно, и отключил-то галку "Только для GET запросов", чтоб понаблюдать за POST и выявить случаи необходимости его кэширования для использования в автономке, да потом позабыл включить обратно...
Случаев таких не нашлось ни одного. Интересно, есть ли у кого примеры удачного кэширования POST-запросов?
Сейчас я вижу возможную пользу только при условии реализации хранения метаданных (чтоб различать в кэше запросы с одним УРЛ, но разными куками) и правки контента. Но будет ли все это реализовываться?
Но при этом ответы на любой запрос (GET, POST, OPTIONS), адресованный самому НС, т.е. в поле Host запроса прописан сокет НС, кэшировать просто нет смысла по определению. В рассматриваемом мной случае запрос OPTIONS адресован самому НС, он сам формирует ответ, ниоткуда его не скачивая. Так чего тут кэшировать вне зависимости от состояния галки "Только для GET"?
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #9 : 09 октября 2007, 23:40:23 »

Сейчас я вижу возможную пользу только при условии реализации хранения метаданных (чтоб различать в кэше запросы с одним УРЛ, но разными куками) и правки контента.

HC не хранит в кэше куки - это забота браузера! Поэтому не вижу особого смысла и в будущем сохранять другие запросы, кроме GET.


P.S. Справедливости ради замечу, что есть все-таки сайты, которые выдают новую страницу на POST-метод!

Например, есть такой сайтик: http://www.samaralan.ru/index.php - если ходить на нем по ссылкам, то новые страницы запрашиваются POST-методом и грузятся под одним и тем же URL, поэтому в автономке можно будет увидеть в лучшем случае только одну последнюю страницу!

P.P.S. Но все равно у меня эта галка "Только для GET-запросов" в списке "Запись в кэш" включена всегда и пользы от ее выключения я пока найти не смог...
« Последнее редактирование: 11 октября 2007, 12:07:55 от DenZzz » Сообщить модератору   Записан
Сергей
Beta tester
*****

Репутация: +9/-2
Offline Offline

Сообщений: 621



« Ответ #10 : 10 октября 2007, 15:17:30 »

Например, в моих краях есть такой сайтик: http://www.samaralan.ru/index.php - если ходить на нем по ссылкам, то новые страницы запрашиваются POST-методом и грузятся под одним и тем же именем, поэтому в автономке можно будет увидеть в лучшем случае только одну последнюю страницу!

Еще пример такого сайта www.skylink.ru
Не везде там. На странице тарифов например хитрые ссылки.
Очень хочется сохранять его в кэше. Но как?
« Последнее редактирование: 10 октября 2007, 15:29:29 от Сергей » Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #11 : 10 октября 2007, 20:50:17 »

Еще пример такого сайта www.skylink.ru
Не везде там. На странице тарифов например хитрые ссылки.
Очень хочется сохранять его в кэше. Но как?
Сейчас, имхо, никак. Теоретически - добавлением контрольной суммы тела POST-запроса к имени файла, как это делается сейчас для длинных УРЛ. Но такого НС не умеет.
Сорри за оффтоп.
Сообщить модератору   Записан
Сергей
Beta tester
*****

Репутация: +9/-2
Offline Offline

Сообщений: 621



« Ответ #12 : 11 октября 2007, 09:34:40 »

Да. Сейчас никак. Но если HC позиционируется как прокси, умеющий сохранять в кэше то, что другие не умеют, то надо развивать эту тему.
Кэшировать  POST, Partial-Content и т.п. .....
Сообщить модератору   Записан
Страниц: [1]   Вверх
  Отправить эту тему    Печать  

 
Перейти в: