Android (2.3.3) родной браузер проблемы с обработчиками - PullRequest
2 голосов
/ 14 марта 2012

В настоящее время я работаю над сайтом asp.net для мобильных устройств, используя jqMobile. Если я открываю веб-сайт в настольном браузере (Chrome, Opera) или «Opera Mobile», все работает просто отлично, но собственный браузер демонстрирует странное поведение:
При первом входе в систему все нормально, но если я пытаюсь повторно войти в систему или обновить информацию на странице (с помощью ajax-запроса) - я получаю старые результаты, также нет никакого запроса к обработчикам. (То же поведение на эмуляторе Android 2.3.3)

Как заставить браузер отправлять запросы, получать актуальные данные?

1 Ответ

1 голос
/ 14 марта 2012

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

Один из способов - добавить случайное число в конце каждого ajaxпозвоните и позвоните на страницу, например: /mypage?id=23&random=88374891

Это может быть сделано автоматически с помощью jQuery с помощью cache:false на вызовах ajax, например:

    jQuery.ajax({
        url: FinalCall,
        type: "GET",
        dataType: 'html',
        cache: false,
        success: function(data) 
    {

Второй способ - отключить любой возможный кеш с помощью заголовков, чтобы страница не оставалась в мобильном кеше, а снова читалась.Вот набор, который отключает все возможные кэши:

Response.Cache.SetExpires(DateTime.UtcNow.AddYears(-4));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetNoStore();

Response.ExpiresAbsolute = DateTime.Now.Subtract(new TimeSpan(1, 0, 0, 0));
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.AppendHeader("Pragma", "no-cache");

Надеюсь, эта помощь.

...