是否有任何方法可以在ASP.NETMVC5中使用服务工作者缓存所有文件



我想让我的遗留ASP.NETMVC5项目成为PWA,所以我正在设置服务工作者。
我希望缓存/Views/Home/目录中的Project文件。

所以我添加了这样的缓存列表。

const CACHE_NAME = "cache";
const CACHE_LIST = [
"/",
"/Views/",
"/Views/Home/",
"/Views/Home/Project"
]
const addResourcesToCache = async (resources) => {
const cache = await caches.open(CACHE_NAME);
await cache.addAll(resources);};
}
self.addEventListener('install', (event) => {
self.skipWaiting();
event.waitUntil(
addResourcesToCache(CACHE_LIST)
);
});

但没有奏效。它发生错误。

Uncaught (in promise) TypeError: Failed to execute 'addAll' on 'Cache': Request failed

我试过了是否有任何方法可以缓存服务工作者中定义的文件夹/路径的所有文件?但不起作用。

我这样更改了缓存列表,它起作用了。

(http://localhost:23402/subdomain1/subdomain2/subdomain3/是关于项目文件的url。(

const CACHE_LIST = [
"/",
"http://localhost:23402/subdomain1/subdomain2/subdomain3/"
]

但我必须缓存我的遗留项目中的所有文件,所以我不能像那样一个接一个地注册缓存。
我想缓存所有带有文件路径而不是url的文件。

我该如何解决这个问题?

但是您的服务工作者和服务器代码(C#(是完全解耦的。因此,你在服务人员中缓存的内容基本上与你的网站上呈现的内容无关,也与它的真实呈现方式无关。

将服务工作者视为在浏览器中运行的web服务器。

您可以从服务工作者那里呈现HTML等。您通过HTTPS请求来获取数据(HTML、CSS、JS、图像、JSON、视频(。您可以缓存任何响应对象,甚至可以在服务工作者中创建响应对象并将其缓存在服务工作者缓存中。您还可以在IndexedDB中缓存原始数据(我在应用程序中经常使用它(。

这似乎是开发人员常见的误解。服务人员是独立的。它不在乎您是否使用ASP.NET、JSP、WordPress或CGI bin。我个人现在在应用程序中使用静态HTML和API调用来返回JSON。不再有ASP.NET:(已经7年没有了。

最新更新