Кэш приложения HTML 5 IE10/11 Неустранимая ошибка AppCache при работе Chrome и Android

Я создал простое тестовое приложение ASP.NET MVC, пытающееся использовать кэш приложения. Кажется, что Chrome работает нормально, однако в IE 10/11 он выдает нам следующие сообщения при попытке загрузить кеш. Любые идеи или образцы, где это работает?

Неустранимые ошибки IE AppCache

Я пробовал несколько вещей, включая файл меньшего размера для загрузки. Я видел, что есть предел, который может вызвать подобную ошибку.

Манифест

CACHE MANIFEST
#VERSION 9

CACHE:
/Content/site.css

NETWORK:
*

FALLBACK:

Представление индекса

@{
    Layout = null;
}

<!DOCTYPE html>

<html manifest="home/manifest">
<head>
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />
    <meta http-equiv="EXPIRES" content="0" />
    <meta http-equiv="PRAGMA" content="NO-CACHE" />
    <title>Offline Test</title>
    <link rel="Stylesheet" href="/Content/site.css"
          type="text/css" />
    <script src="/Scripts/jquery-1.10.2.min.js"
            type="text/javascript"></script>
    <script>
        $(function () {

        });
    </script>
</head>
<body>

</body>
</html>

MVC-контроллер

[OutputCache(Duration = 0, NoStore = true)]
public class HomeController : Controller

Действие MVC

    public ContentResult Manifest()
    {

        Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
        return new ContentResult
        {
            ContentType = "text/cache-manifest",
            Content = RenderPartialViewToString("Manifest"),
             ContentEncoding = System.Text.Encoding.UTF8

        };

        // Doesn't work.  Content type is still html
        //Response.ContentType = "text/cache-manifest";
        //Response.ContentEncoding = System.Text.Encoding.UTF8;
        //Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
        //return PartialView();
    }

Я попытался добавить вызов SetNoStore() в обработчик Application_EndRequest, но это не имело никакого значения.

    public override void Init()
    {
        base.Init();

        EndRequest += Application_EndRequest;
    }

    private void Application_EndRequest(object sender, EventArgs e)
    {
        HttpContext.Current.Response.Cache.SetNoStore();
    }

Спасибо!


person MikeDouglasDev    schedule 02.06.2014    source источник
comment
мне кажется, что сервер ничего не возвращает, 404, на запрос корневого файла. Запросы appCache не регистрируются на вкладке сети, насколько мне известно. Откройте скрипач и посмотрите, сделан ли запрос и что происходит. Если это не поможет, установите точку останова в контроллере MVC, чтобы увидеть, запрашивается ли контент и что происходит. Я предполагаю, что Chrome, вероятно, тоже не работает, но не сообщает вам об этом.   -  person Chris Love    schedule 03.06.2014


Ответы (1)


Удалите no-store в Cache-Control-заголовке, это сломает appCache в IE10/IE11 (см. /1039180).

person Robin    schedule 26.06.2014
comment
Это исправило это. Спасибо! - person MikeDouglasDev; 09.07.2014
comment
Можете ли вы поделиться своим ответом, я пробую автономный режим и получаю ту же ошибку? - person Martin Chinome; 13.02.2018