Cache API с MVC Views - PullRequest
       63

Cache API с MVC Views

0 голосов
/ 10 января 2019

У меня есть базовая форма MVC, и я пытаюсь использовать Javascript Cache API для кэширования всех моих файлов CSS, JS, HTML, чтобы когда пользователи (люди на местах) не имели надежного доступа, они все еще могли используйте мою веб-форму. Очевидно, что я использую IndexedDB и сервисных работников для проверки соединения и локального сохранения, когда соединение недоступно, и синхронизации, когда оно доступно.

Я прошел некоторые уроки, и все кажется простым при работе с кэшированием реальных, физических файлов (css, html, js). MVC странный, хотя, так как вы пойдете. Я создал базовые представления Index, Create, Edit, Details. Когда я создаю массив URL для кэширования, таких как

var urlsToCache = [

'/App/Details',
'/App/Edit',
'/App/Create',
'/App/Index',

'/App/Content/bootstrap.css',
'/App/Content/site.css',
'/App/Scripts/jquery-1.10.2.js',
'/App/Scripts/jquery.form.js',
'/App/sw.js',
'/App/Scripts/bootstrap.js',

] .. все кэши, кроме ДЕТАЛЕЙ и РЕДАКТИРОВАНИЯ. Индексировать и создавать кэш нормально. Я на самом деле удивлен последними двумя кешами, поскольку они не являются физическими файлами. Я предполагаю, что Details и Edit не кэшируются, потому что они не работают без параметров строки запроса.

ВОЗМОЖНО ли вообще кешировать эти два представления? Или кто-нибудь знает что-нибудь о NuGet, которое решает эту ситуацию?

1 Ответ

0 голосов
/ 10 января 2019

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

if (id == null)
{
//return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
return View();
}

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

Так что пусть это будет урок для всех, кто создает автономные приложения с MVC и использует Cache API. Избавьтесь от строк, которые возвращают ошибочные запросы в ваших представлениях CRUD, если идентификационные номера не переданы. Просто верните пустую модель в представление (верните View ()). Это позволяет вам кэшировать ваши страницы. И вам, очевидно, потребуется написать код для обработки автономного извлечения и представления в коде, который выполняется при загрузке страницы, но он все же позволит вам использовать функции MVC / Razor, когда он-лайн.

Стоит отметить: кэш будет "/ App / Edit". Если вы загрузите «/ App / Edit / 2», он не будет совпадать с URL-адресом в вашем кэше, поэтому вы получите автономное сообщение. Тем не менее, вы можете легко изменить свою страницу индекса, чтобы отправить идентификатор по почте. Просто создайте на странице форму, которая переходит к действию «Изменить», и измените ссылку на подчеркнутый интервал с помощью щелчка, который устанавливает значение скрытого поля для идентификатора. Вам нужно будет передать другое скрытое поле, чтобы сообщить ему, что его нужно получить вместо обновления (поскольку контроллер имеет различные действия GET AND POST для редактирования. Действие GET бесполезно, но сохраните его для кэширования. Вы получаете извлечение то, что вы обычно выполняете в GET, теперь будет выполняться в POST с помощью оператора if для проверки вашего флага скрытого поля.

...