понедельник, 24 сентября 2012 г.

Вот Вам bug с кэшированием HTTP POST в iOS6 -


В операционной системе IOS 6 обнаружилась внезапная новая функция: система автоматически кэширует все ответы на запросы POST, даже если в заголовке явно прописано, что их нельзя кэшировать. Из-за этого у массы девелоперов веб-приложений "поломалась" функциональность, которая была реализована на Ajax. У пользователей IOS6 отдельные веб-приложения некорректно работают, так как броузер берёт из кэша информацию, которую должен приобретать от сервера в интерактивном режиме. К примеру, создатели фреймворка PHONEGAP приводят подобный пример. GETNEWRECORDID(INTRECORDTYPE)


Если применяется такая функция, то всегда при запросе к серверу она возвращает различный результат, однако под IOS6 результат будет закэширован, так что приложение не сумеет нормально вести работу. В качестве обхода возможно при каждом вызове изменять наименование функции. GETNEWRECORDID(INTRECORDTYPE, Strtimestamp) Эксперт служебной группы IETF HTTPBIS Working Group Марк Ноттингем (Mark Nottingham) объясняет, что такое поведение IOS 6 является явным нарушением спецификаций RFC 2616, которые разрешают кэширование ответов HTTP POST лишь в исключительных ситуациях. Марк Ноттингем выражает надежду, что Apple с большой скоростью выпустит апдейт, в коем будет исправлена ошибка, а разработчикам не будет нужно применять обходной путь для решения этой трудности в ближайшие 5 лет.




         In an operating system iOS 6 unexpected new function was found out: the system automatically кэширует all answers to inquiries POST even if in heading it is obviously registered that them is impossible кэшировать. Because of it at many developers of web appendices functionality which has been realised on Ajax "has broken". iOS6 some web appendices incorrectly work for users, as the browser takes the information which should receive from the server in an interactive mode from a cache. For example, developers фреймворка PhoneGap result such example. getNewRecordID (intRecordType) If such function each time at inquiry to the server it returns different result is used, but under iOS6 the result will be закэширован so the appendix cannot normally work. As detour it is possible to change the function name by each call. getNewRecordID (intRecordType, strTimestamp) The expert of working group IETF HTTPbis Working Group Mark Nottingem (Mark Nottingham) explains that such behaviour iOS 6 is obvious infringement of specifications RFC 2616 which resolve кэширование answers HTTP POST only in exceptional cases. Mark Nottingem expresses hope that Apple will quickly let out an update in which the error will be corrected, and developers should not use roundabout a way for the decision of this problem the next five years.


Комментариев нет:

Отправить комментарий