Creare una lista precache per service worker
Incolli i percorsi dei file che il sito deve conservare per l'uso offline e ottenga un elenco pulito e ordinato: /assets/./app.js diventa /assets/app.js, un foglio di stile ripetuto viene scartato e le cinque voci dell'esempio diventano 4. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Un’installazione affidabile del service worker parte da un elenco pulito dei file da memorizzare nella cache. Questo generatore riceve percorsi di risorse statiche, converte le voci relative in URL dalla radice, risolve i segmenti punto sicuri, conserva le query significative e rimuove i duplicati senza alterare il primo ordine. Il risultato contiene una lista precache pronta per Cache Storage e conteggi utili per automatizzare i controlli della build.
Trasformi l’output della build in una lista pronta
Le build web moderne possono produrre HTML, fogli di stile, chunk JavaScript, font, icone e pagine di riserva in directory diverse. Copiare manualmente quei nomi in un service worker richiede tempo e crea disallineamenti quando un file cambia. Il primo ordine viene conservato per agevolare revisioni e confronti tra build.
La risposta indica anche il numero finale di risorse e quanti duplicati sono stati eliminati. Questi valori sono utili nella CI: un calo inatteso può fermare la build prima della pubblicazione di una versione offline incompleta. Lo strumento non scarica, identifica o ispeziona i file; trasforma soltanto percorsi ottenuti da una procedura di build affidabile.
Normalizzazione prevedibile dei percorsi
Percorsi scritti in modo diverso possono indicare lo stesso file. Per esempio, <code>assets/app.js</code>, <code>/assets/app.js</code> e <code>/assets/./app.js</code> diventano <code>/assets/app.js</code>. Le barre ripetute vengono compattate, i segmenti superiori sicuri risolti, gli spazi esterni rimossi e i risultati normalizzati duplicati omessi dopo la prima occorrenza.
Le query restano perché <code>/app.js? Sono rifiutati anche URL completi o relativi al protocollo, poiché questa capacità riguarda file statici dello stesso sito, non risorse di terzi. Un segmento che superi la radice produce un errore invece di una riscrittura silenziosa.
L’output rimane così deterministico senza ipotesi sull’origine, sui contenuti o sulla disponibilità esterna.
Usi la lista in sicurezza nel service worker
Inserisca l’array restituito nella routine di installazione che apre la cache versionata e chiama <code>addAll</code>. Versioni separatamente il nome della cache, perché il generatore non sa quando cambia il contenuto dietro un percorso stabile. Se il bundler inserisce hash nei nomi, usi i percorsi prodotti; con nomi stabili, aggiorni la versione della cache quando cambiano i contenuti.
Consideri l’input una lista consentita intenzionale: includa la struttura dell’applicazione e le risorse necessarie offline, ma eviti pagine personali, risposte autenticate o URL dinamici senza limite. Una lista grande rallenta il download e aumenta i possibili errori. Il limite difensivo è 10,000 voci, anche se una lista reale dovrebbe essere molto più breve.
In attivazione elimini le vecchie cache secondo la Sua politica. Lo strumento crea solo la lista: non genera eventi, non sceglie strategie, non accede alla rete e non modifica un service worker esistente.
Casi d'uso
Generare la lista della struttura dell’app
Normalizzi i percorsi HTML, CSS, JavaScript, font e icone necessari per avviare offline un’applicazione web progressiva.
Controllare gli artefatti nella CI
Converta i nomi raccolti in un output stabile e verifichi i conteggi prima della distribuzione.
Ripulire una lista manuale
Risolva percorsi relativi incoerenti ed elimini duplicati accidentali mantenendo l’ordine di installazione.
Domande frequenti
Quanto costa?
Lo stesso generatore deterministico può funzionare anche nel Suo browser in questa pagina.
Lo strumento scarica o verifica le risorse?
No. Convalida e normalizza i percorsi senza richieste di rete e senza verificare l’esistenza dei file.
Perché le query vengono conservate?
Una query può scegliere una chiave o versione diversa; rimuoverla potrebbe unire risorse che devono restare separate.
Perché gli URL remoti vengono rifiutati?
La capacità crea una lista statica dello stesso sito. La cache tra origini richiede scelte esplicite su disponibilità, CORS, privacy ed errori.
C'è un limite al numero di percorsi?
Lo strumento accetta fino a 10.000 voci come limite di sicurezza, ma un elenco di produzione dovrebbe essere molto più corto. Più l'elenco di installazione è lungo, più dura il download e più è facile che l'installazione fallisca con connessioni instabili.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/web/service-worker-cache-list-build \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"paths":["/","/assets/app.css","assets/app.js","/icons/icon-192.png"]}'const res = await fetch("https://api.kit.forhosting.com/web/service-worker-cache-list-build", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"paths": [
"/",
"/assets/app.css",
"assets/app.js",
"/icons/icon-192.png"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/service-worker-cache-list-build",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"paths": [
"/",
"/assets/app.css",
"assets/app.js",
"/icons/icon-192.png"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/service-worker-cache-list-build", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"paths":["/","/assets/app.css","assets/app.js","/icons/icon-192.png"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"paths":["/","/assets/app.css","assets/app.js","/icons/icon-192.png"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/service-worker-cache-list-build", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"paths": [
"/",
"/assets/app.css",
"assets/app.js",
"/icons/icon-192.png"
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.service_worker_cache_list_build",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
timeout_sec | 30 |
max_crawl_pages | 25 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Trasformi l’output della build in una lista pronta
Fornisca i percorsi statici nell’ordine di recupero desiderato: il generatore restituisce una lista precache per service worker nella chiave <code>precache_manifest</code>. Ogni elemento è un URL locale relativo alla radice, quindi Lei può passare direttamente l’array a <code>cache.addAll(precache_manifest)</code> durante l’installazione.
Normalizzazione prevedibile dei percorsi
v=41</code> e <code>/app.js? v=42</code> possono essere chiavi cache distinte. I frammenti vengono rifiutati: non viaggiano nelle richieste HTTP e potrebbero far apparire diverse risorse identiche.
Domande tecniche
Posso passare il risultato direttamente a cache.addAll?
Sì. precache_manifest è un array di URL locali adatto al metodo addAll di Cache Storage.
Che cosa accade se la lista è vuota?
La richiesta fallisce con invalid_input, perché una lista precache vuota non soddisfa lo scopo della capacità.