Web worker

Un web worker, come definito dal World Wide Web Consortium (W3C) e dal Web Hypertext Application Technology Working Group (WHATWG), è uno script JavaScript che viene eseguito in background in una pagina HTML indipendentemente dagli script dell'interfaccia utente. I web worker sono spesso in…

Un web worker, come definito dal World Wide Web Consortium (W3C) e dal Web Hypertext Application Technology Working Group (WHATWG), è uno script JavaScript che viene eseguito in background in una pagina HTML indipendentemente dagli script dell'interfaccia utente. I web worker sono spesso in grado di utilizzare le CPU multi-core in modo più efficiente.

Il W3C e WHATWG considerano i web worker come script a esecuzione prolungata che non vengono interrotti dagli script dell'interfaccia utente (che rispondono ai clic o ad altre interazioni dell'utente). Il fatto di impedire a tali worker di essere interrotti dalle attività utente dovrebbe consentire alle pagine web di rimanere reattive mentre eseguono attività lunghe in background.

Il W3C e il WHATWG sono attualmente nel processo di sviluppo della definizione di API per i web worker.

Panoramica

Come concepiti da WHATWG, i web worker sono relativamente pesanti. Sono intesi per essere longevi, con un costo elevato in termini di prestazioni di avvio e un costo elevato di memoria per istanza. Di conseguenza non dovrebbero essere utilizzati in grandi quantità, in quanto potrebbero monopolizzare le risorse di sistema.

I web worker consentono l'esecuzione dei thread del browser in concorrenza a uno o più thread JavaScript in esecuzione in background. Normalmente il browser, che segue un singolo thread di esecuzione, deve attendere il completamento dell'esecuzione dei programmi JavaScript prima di procedere e ciò potrebbe richiedere del tempo significativo che il programmatore potrebbe voler nascondere all'utente. I web worker permettono al browser di continuare con le normali operazioni durante l'esecuzione in background dello script.

La specifica web worker è separata dalla specifica HTML5 e può essere utilizzata con HTML5.

Esistono due tipi di web worker: dedicati e condivisi.

Quando i web worker sono eseguiti in background non hanno accesso diretto al DOM ma comunicano con il documento tramite scambio di messaggi. Ciò consente l'esecuzione multi-thread dei programmi JavaScript.

Caratteristiche

I web worker interagiscono con il documento principale tramite il passaggio di messaggi. Il codice seguente crea un worker che eseguirà il codice JavaScript nel file specificato.Per inviare un messaggio al worker si usa il metodo postMessage dell'oggetto worker, come mostrato nell'esempio successivo.La proprietà onmessage usa un event handler per recuperare informazioni da un worker.Una volta che un worker è terminato diventa fuori portata e la variabile che fa riferimento diventa undefined; a questo punto è necessario creare un nuovo worker, se necessario.

Esempio

L'uso più semplice dei web worker è eseguire task computazionalmente costosi senza interrompere l'interfaccia utente.

In questo esempio, il documento principale crea un web worker per computare numeri primi e li mostra progressivamente l'ultimo numero primo trovato.

La pagina principale come segue:La chiamata al costruttore Worker() crea un web worker e ritorna un oggetto worker , il quale è usato per comunicare con il web worker. L'event handler onmessage dell'oggetto permette al codice di ricevere messaggi dal web worker.

Il codice del web worker, contenuto nel file worker.js, è il seguente:

Per mandare un messaggio alla pagina quando un nuovo numero primo è stato trovato si utilizza il metodo postMessage().

Supporto

Il supporto dei browser per i web worker può essere controllato attraverso la proprietà worker sull'oggetto globale window, la quale sarà undefined se il browser non li supporta.

Il seguente codice di esempio controlla il supporto dei web worker su un browser:I web worker sono attualmente supportati da Chrome, Opera, Internet Explorer 10, Mozilla Firefox e Safari. Safari per iOS supporta i web worker da iOS 5. Il browser Android ha iniziato a supportarli in Android 2.1, ma il supporto è stato rimosso nelle versioni Android 2.2–4.3 prima di essere ripristinato in Android 4.4.

Servizi correlati

Altre voci

A

Applicazione web

Una applicazione web (web application in inglese, abbreviato web app), in informatica ed in particolare nella programmazione web, indica genericamente tutte le applicazioni distribuite ovvero applicazioni accessibili/fruibili via web per mezzo di un network, come ad esempio una Intranet…

Leggi la voce →
W

World Wide Web

Il World Wide Web (termine in lingua inglese traducibile in italiano come "rete di ampiezza mondiale" o "rete mondiale"), abbreviato web, WWW o W3, è uno dei principali servizi di Internet, che permette di navigare e usufruire di un insieme molto vasto di contenuti, multimediali e non,…

Leggi la voce →
Pagina web dinamicaP

Pagina web dinamica

Una pagina web dinamica è una pagina web il cui contenuto, in tutto o in parte, è generato sul momento dal server, potendo dunque essere diversa ogni volta che viene richiamata consentendo un'interattività con l'utente. Questa tipologia di pagina si è diffusa nel contesto del Web 2.0.

Leggi la voce →
W

Web Content Accessibility Guidelines

Le linee guida per l'accessibilità dei contenuti Web (in inglese Web Content Accessibility Guidelines; abbreviato WCAG) sono parte di una serie di linee guida per l'accessibilità dei siti Web, pubblicate dal Web Accessibility Initiative (WAI), che a sua volta fa parte del World Wide Web…

Leggi la voce →
Sviluppo PlusS

Sviluppo Plus

Sviluppo Plus (in polacco Rozwój Plus; abbreviato in R+) è un'associazione politica polacca di orientamento conservatore, democratico-cristiano e solidarista.

Leggi la voce →
Ambiente di sviluppo integratoA

Ambiente di sviluppo integrato

Un ambiente di sviluppo integrato (in inglese integrated development environment ovvero IDE) è un'applicazione che fornisce vari strumenti per lo sviluppo software, in particolare un editor di codice sorgente, modalità di automazione dello sviluppo, e un debugger. Alcuni ambienti comprendono…

Leggi la voce →