В операционной системе 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 быстро выпустит апдейт, в котором будет исправлена ошибка, а разработчикам не придётся использовать обходной путь для решения этой проблемы в ближайшие пять лет.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии