Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 8 di 12
  • livello principiante
Indice lezioni

Soluzioni specifiche

Tecniche per velocizzare il caricamento e il parsing dei file xml
Tecniche per velocizzare il caricamento e il parsing dei file xml
Link copiato negli appunti

.XMLNITRO e XML:ACK

Il parsing XML, al tempo del Flash 5, non era sicuramente il massimo per efficienza e velocità. Nel Flash MX è stato notevolmente migliorato, ma nel caso in cui sia necessario ancora utilizzare il Flash 5, si può ricorrere a due eccezionali risorse create da Brandon Hall della Fig Leaf Software

- XMLnitro: rimpiazza il metodo parseXML della Classe XML, velocizzandone le prestazioni, e rendendo funzionale la proprietà ignoreWhite anche per le versioni del player precedenti alla 5,0,41,0: il file as può essere scaricato dall'elenco a destra in questa pagina.

Una volta scaricato, perchè venga incluso nel filmato Flash, sarà sufficiente scrivere nel primo frame:

#include "xmlnitro.as"

- XML:ACK : scaricabile dalla stessa pagina dell'XMLnitro, permette di parsare file XML di notevoli dimensioni senza generare errori e senza creare loop infiniti.

Caricare file xml da un dominio differente

Per questioni di sicurezza, descritte nel Security White Paper, un filmato swf non può caricare variabili da una sorgente di dati contenuta in un altro dominio. Facciamo un esempio.

Il filmato http://www.primodominio.com/movie.swf può caricare il file xml il cui indirizzo è http://www.primodominio.com/cartella/file.xml dal momento che entrambi risiedono nello stesso dominio (primodominio.com).

Al contrario, il filmato http://www.primodominio.com/movie.swf non può caricare il file xml il cui indirizzo è http://www.secondodominio.com/cartella/file.xml dato che risiedono in due domini diversi (primodominio.com e secondodominio.com).

Per risolvere questo problema ci sono due diverse soluzioni: la prima, prevede che lo sviluppatore abbia il controllo di entrambi i domini, la seconda che lo abbia solo per quello con il filmato swf.

Lo sviluppatore controlla entrambi i domini:

  1. viene creato il filmato "loader.swf" e uploadato nello stesso dominio del file xml
  2. il filmato "loader.swf" carica correttamente il file xml, dal momento che risiede nello stesso dominio
  3. il filmato "movie.swf" carica con il loadMovie il filmato "loader.swf", e ne estrae i dati caricati.

Questo sistema funziona correttamente per il Flash Player fino alla versione 5: a partire dal Flash Player 6, il filmato "loader.swf" deve esplicitamente permettere al filmato "movie.swf" di accedere ai propri dati. Questo avviene scrivendo, nel primo frame di quot;loader.swf", la seguente riga di codice:

System.security.allowDomain("primodominio.com");

che significa: "permetti ai filmati residenti nel dominio 'primodominio.com' di accedere ai dati contenuti in questo filmato".

Lo sviluppatore controlla solo il dominio con il filmato swf:

In questo caso, è necessario ricorrere ad uno script server side. Lo script (asp, php, cfm) deve risiedere nello stesso dominio del filmato: il filmato richiama la pagina nel proprio dominio, che a sua volta richiama il file xml nell'altro dominio, e ne restituisce i dati al filmato stesso.

Nella TechNote 16520 del Macromedia Flash Support, intitolata Loading data across domains, sono spiegati altri dettagli su questo metodo, e sono inclusi i file contenenti gli script server side per ColdFusion, PHP, ASP e Java Servlet.

Ti consigliamo anche