在服務工作者,我可以定義資源的服務人員獲取過程中這些被緩存的陣列下面就開始提到的名稱,服務工作者從給定的路徑/目錄中選擇所有文件並將所有文件添加到緩存中
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