在服务工作者,我可以定义资源的服务人员获取过程中这些被缓存的阵列下面就开始提到的名称,服务工作者从给定的路径/目录中选择所有文件并将所有文件添加到缓存中
0
A
回答
0
这是不可能的。 SW(或者浏览器)对于Web服务器上特定路径中的文件没有任何线索。您必须提供要缓存的文件的名称。关于同一问题的更多信息here.
您是否在使用某些构建工具来自动生成文件列表?如果没有,你最有可能的应该:)
编辑:
一个用于SW工具最常用的图书馆是针线。他们提供资产runtime-caching和precaching。他们还为例如构建工具插件。 Webpack和Gulp。
运行时缓存通过从缓存中提供资产(如果缓存中存在资源并且无论如何将其从服务器更新)来工作。基本上,每个新的资产将首先从网络请求,然后在随后的请求中从缓存中返回。
EDIT2:
是的,你可以用针线不NPM在一定程度上。您需要运行NPM脚本等来收集要缓存的文件的文件名,但您仍然可以通过在手写的SW文件中导入Workbox.js脚本来实现运行时缓存。
只是说
importScript("https://unpkg.com/[email protected]/build/importScripts/workbox-sw.prod.v2.1.0.js")
在你的SW顶部进口的最新(截至目前)针线的版本。你可以看到这是runtime-caching example here too中发生的情况。
您也可以下载上面的.js文件,并将其放置在您自己的服务器上,并将其从相对路径导入。
0
使用工作箱sw进行运行时缓存。
服务worker.js:
importScripts('https://unpkg.com/[email protected]/build/importScripts/workbox-sw.dev.v0.0.2.js');
importScripts('https://unpkg.com/[email protected]/build/importScripts/workbox-runtime-caching.prod.v1.3.0.js');
importScripts('https://unpkg.com/[email protected]/build/importScripts/workbox-routing.prod.v1.3.0.js');
const assetRoute = new workbox.routing.RegExpRoute({
regExp: new RegExp('^http://localhost:8081/jobs/static/*'),
handler: new workbox.runtimeCaching.CacheFirst()
});
const router = new workbox.routing.Router();
//router.addFetchListener();
router.registerRoutes({routes: [assetRoute]});
router.setDefaultHandler({
handler: new workbox.runtimeCaching.CacheFirst()
});
脚本在我的HTML文件来加载Servcie工人。
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('http://localhost:8081/jobs/static/service-worker.js?v=4').then(function(registration) {
// Registration was successful
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}, function(err) {
// registration failed :(
console.log('ServiceWorker registration failed: ', err);
});
});
}
</script>
+0
缓存以http:// localhost:8081/jobs/static // *开头的所有请求 –
相关问题
- 1. 有没有办法将属性文件中的所有属性作为JVM参数传递?</p> <p><code>java -Dkey=value ...</code></p> <p>有没有办法从那样的属性文件传递的所有属性:
- 2. <glad/glad.h>:没有这样的文件或目录
- 3. 没有这样的表android_metadata,有什么问题?</p> <p>没有这样的表android_metadata</p> <p>我需要:
- 4. 的#include <cstdatomic> “没有这样的文件” 在Ubuntu
- 5. C++头文件包含<>路径
- 6. 生成文件:错误:<jni.h>:没有这样的文件或目录
- 7. 文件夹扫描脚本,想用<files></files>而不是文件夹包围所有文件
- 8. 通过</p> <pre><code>shopt -s extglob </code></pre> <p>在我的Bash启用无法移动的所有文件目录以外的文件夹中的终端
- 9. 人<Person>,什么是<Person>?
- 10. 所有<br>与<br />
- 11. 定位文件路径的<InMemoryUploadedFile> Django的对象
- 12. <thead>和<th>如果你看一下我所有的在表中的<code><thead></code>标签<code><th></code>标签,你可以看到,如果每个人都有自己的类不匹配表
- 13. 与事件这样</p> <pre><code>public class A { public event Func<string, string> Message; public void Calling() { Message("Hello world!"); } } </code></pre> <p>如果我称之为<code>Calling()</code>方法,没有人订阅了<code>Message</code>事件又如何初始化事件
- 14. <script><!--//--></script>有一个现代的目的?
- 15. Java:<init>和<clinit>和有什么不一样?
- 16. <% %>和<%= %>和有什么不一样?
- 17. IEqualityComparer <T>和IEquatable <T>和有什么不一样?
- 18. 任务<ObservableCollection <AppointmentItem >>不包含的定义其中
- 19. Mapper.Map <任务<IEnumerable的<Address>>,任务<IEnumerable的<AddressView>>()
- 20. 如何从文件中找到所有不在HTML注释(<!-- -->)中的所有<meta>标签?
- 21. 我怎样才能从所述图像提取路径<RI:附件RI:文件名=“故事-IMG-05.png” />
- 22. 是否<input>没有<form>?
- 23. <%# %>和<%= %>有什么区别?
- 24. 的Rails:</p> <p><code>rails server</code></p> <p>有:</p> <p><code>rails new test</code></p> <p>然后我用命令来启动该服务器:无法从浏览器
- 25. 我可以在哪里登录ASP.NET Core应用程序的开始/停止/错误事件?</p> <ul> <li><code>Application_Start()</code></li> <li><code>Application_End()</code></li> <li><code>Application_Error()</code></li> </ul> <p>怎么办:
- 26. 有关<baseAddresses>的WCF服务配置文件问题
- 27. 如果http.path设置,有没有提供我application.conf</p> <pre><code>http.path=/manage </code></pre> <p>所以对/
- 28. C#XMLReader ReadString如何读取所有包含元素中嵌套的xml?如下</p> <pre><code><FRUIT> <HTML><B>1.</B> Apple</HTML> <HTML><B>2.</B> Banana</HTML> </FRUIT> </code></pre> <p>和我的代码样本数据
- 29. 有什么样DbSet <T> .RemoveWhere(谓语<T>)
- 30. <unknown>:0:错误:没有这样的文件或目录:'COCOAPODS'
谢谢@pate。现在我正在考虑自动生成文件列表。你能建议我做到这一点的最佳方式吗? –
我可以在运行时缓存吗? –
@MhodYasin是的,我编辑了我的答案 – pate