簡體   English   中英

ASP.Net Core PWA緩存查詢

[英]ASP.Net Core PWA Cache Query

Asp.Net Core 2.2。 我正努力變成一個漸進式Web應用程序MVC應用程序(PWA)使用的Mads克里斯滕森的WebEssentials.AspNetCore.PWA包裝https://github.com/madskristensen/WebEssentials.AspNetCore.ServiceWorker ,我有一些問題,保證一定的工作頁面離線。

該應用程序的主要功能涉及向用戶呈現一系列問題,並將響應保存到數據庫中。 該視圖由ViewModel填充,該ViewModel查詢數據庫以顯示正確的信息。

我的問題是,由於數據庫內容很少更改,我是否可以緩存查詢結果,以便整個應用程序都可以脫機工作? 如果是這樣,那么最佳做法是什么?

我的默認地圖路線是controller / action / id,因此當嘗試在appsettings.json中使用routesToPreCache時,我無法包含新創建的“事件”的ID,因此它不起作用-我錯過了一個簡單的技巧還是解決方案要復雜得多?

我的視圖控制器如下:

public class PathwayController : Controller
{
    private readonly ApplicationDbContext _context;

    public PathwayController(ApplicationDbContext context)
    {
        _context = context;
    }

    public ActionResult Pathway(int? id, int? index)
    {
        int currentIndex = index.GetValueOrDefault();
        if (currentIndex == 0)
        {
            ViewBag.NextIndex = 1;
        }
        else
        {
            ViewBag.NextIndex = index + 1;
        }

        PathwayViewModel path = new PathwayViewModel();
        var incident = _context.Incident
            .Include(i => i.IncidentType)
            .FirstOrDefault(m => m.Id == id);
        path.Incident = incident;
        var stageConditions = _context.StageCondition.Where(x => x.IncidentTypeId == incident.IncidentTypeId)
            .Include(s => s.Stage)
            .Include(o => o.Stage.Outcome)
            .OrderBy(x => x.Id)
            .Skip(currentIndex)
            .Take(1)
            .FirstOrDefault();

        path.StageCondition = stageConditions;

        // Validation
        var stageConditionTest = _context.StageCondition.Where(x => x.IncidentTypeId == incident.IncidentTypeId);

        ViewBag.MaxIndex = stageConditionTest.Count();

        //save stage to incident
        incident.StageId = stageConditions.Stage.Id;

        _context.Update(incident);
        _context.SaveChanges();

        return View(path);
    }

您想做的當然可以完成。 但是,這需要適度的“繁重”

Mads PWA實用程序雖然效果很好,但是確實可以使您遠離服務工作者和清單文件。

您需要設置清單以緩存“問題”頁面。 這將告訴PWA繼續進行操作,並自動在用戶的設備上緩存頁面,而無需用戶訪問過該頁面。 這樣,當他們離線時,它將在最終瀏覽到該頁面時顯示。

但是,如果用戶處於脫機狀態,則用戶提交數據涉及兩件事:將響應值存儲到本地存儲(不太困難),然后在設備在線時觸發事件來同步用戶的瀏覽器本地存儲,然后將該數據發送到遠程(您的)數據庫(因為涉及很多,因此很困難)。

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM