2012-12-02 9 views
5

Sto usando jsSHA 1.3.1 quale I downloaded here e utilizzato nel progetto di apprendimento sul mio localhost. Dà un risultato leggermente diverso da quello della copia ho ottenuto facendo riferimento al telecomando come segue:Comprese librerie javascript locali e remote

<script src="https://raw.github.com/Caligatio/jsSHA/master/src/sha1.js"></script> 

la copia remota funziona bene per me, ora, grazie a questo eccellente risposta da @Andreas here.

Ma mi lascia una nuova domanda: qual è la logica per includere una copia e fare riferimento a una libreria js remota? È come "vendere" la libreria, isolando la mia app da successive modifiche nel codice?

+0

il link di download è stato aggiornato l'ultima volta 4 mesi fa, mentre il repository ha avuto un sacco di attività in quel periodo di tempo http://stackoverflow.com/questions/5502540/should-github-be-used-as -a-cdn-per-javascript-libraries – dm03514

+0

Se vuoi collegare hotlink a GitHub, dovresti prima provare i file nel ramo gh-pages, sono più probabili l'ultima versione stabile. In questo caso, è http://caligatio.github.com/jsSHA/sha.js – livibetter

+0

La menzione del problema nella domanda precedente rende la domanda un po 'meno chiara. Forse puoi modificarlo per far risaltare un po 'di più la * nuova * domanda? (Non dicendo che non si dovrebbe collegare alla vecchia domanda, ma forse si può prima indicare la nuova domanda e quindi fornire un collegamento alla vecchia domanda per chiunque sia interessato.) Cheers!Mi piace la domanda e mi piacerebbe farla votare, ma ha bisogno di un po 'di attenzione da parte di OP :-) –

risposta

8

Se la tua applicazione è disponibile sul WWW, dovresti prendere in considerazione l'utilizzo di un noto URL esterno.


<script type="text/javascript" 
    src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" 
</script> 

Questo esempio di seguito ottiene la versione minified di jQuery 1.8.0 dai server di Google.


  • Il beneficio ottenuto con questo metodo viene da caching:

    • Se non si desidera la prima visita di un potenziale utente fa al tuo sito web per essere lento e deludente. Se il tuo visitatore per la prima volta ha visitato il mio sito che utilizza questo URL per jQuery, il suo browser probabilmente lo avrà memorizzato nella cache in modo che non debba caricarlo.

    • L'utilizzo di risorse con versione immutabile (jquery/1.8.0 invece di qualcosa come jquery/corrente) aiuta entrambi gli sviluppatori a non dover individuare le modifiche inattese nel codice di produzione e garantisce che tali risorse possano essere memorizzate nella cache.

    • Se la risorsa deve essere scaricata e l'URL è ospitato su un CDN, è probabile che si verifichi una minore latenza poiché la risorsa verrà probabilmente caricata da un server più vicino alla rete dell'utente. L'URL nell'esempio è ospitato su Google Hosted Libraries che è un CDN. Vedere https://developers.google.com/speed/libraries/devguide per ulteriori informazioni.

  • Un altro argomento spesso visto in queste discussioni è che quando la risorsa deve essere scaricato, si sarà in grado di ottenere una migliore lato client risorsa carico parallelismo se la risorsa non è sul proprio server insieme a 10 più risorse incluse nella pagina perché i browser si limitano a caricare fino a un piccolo numero (6 o più nei browser moderni) di risorse che formano lo stesso server.

  • Se l'applicazione Web su Internet è di importanza cruciale per la sicurezza, è necessario mantenere il controllo di gran parte di quanto è possibile gestire in modo sicuro (e le risorse statiche immutabili o quasi immutabili sono relativamente facili da gestire in modo sicuro).

    • Se l'applicazione di e-banking della mia banca che corre su HTTPS dovesse fare affidamento su server HTTP di Google per il servizio, che sarebbero entrambi concede l'aiuto di Google sulla parte lato client della sua applicazione e-banking ed eliminando praticamente tutto benefici della connessione HTTPS ai suoi server. Ci sono poche cose che uno script client ladro non può fare ...

  • Se l'applicazione è accessibile a livello locale, si dovrebbe probabilmente includerlo nella vostra applicazione sia per le prestazioni (l'accesso ai server dovrebbe essere più veloce dell'accesso ad alcuni server remoti sia in termini di latenza sia in termini di larghezza di banda) e ragioni di affidabilità (non si sta facendo affidamento sulla connessione Internet esterna e sui server remoti attivi e in esecuzione).
3

Si spiega se lo sviluppatore è soddisfatto o meno del "collegamento in rete" alla libreria JS.

Per quanto riguarda l'URL specifico che avete pubblicato,

https://raw.github.com/Caligatio/jsSHA/master/src/sha1.js 

sarei diffidare di riferimento che. È il ramo principale del loro codice sorgente, possono includere cambiamenti di rottura in qualsiasi momento. Potrebbero persino decidere di spostare e ristrutturare il loro codebase, nel qual caso la tua applicazione si interromperà quando l'URL sopra riportato porterà a un 404.

La soluzione migliore è in effetti il ​​riferimento a una versione specifica della libreria. Ciò garantisce che l'applicazione si comporti e continui a comportarsi in modo atteso e conosciuto per quanto riguarda la libreria jsSHA.

Ci sono alcuni modi per farlo. È possibile fare riferimento a una specifica URL fisso che specifica in modo esplicito una versione

http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha1.js 

Perché la sua targhetta (3.0.2), si è un po 'più sicuro, ma si sta ancora fa riferimento il controllo di origine. Questo dovrebbe essere fatto tramite una CDN, se ne esiste una. Non credo che l'URL googlecode.com sia un URL CDN (potrei sbagliarmi). È prassi comune utilizzare un CDN o un collegamento esterno appropriato per fare riferimento a una libreria JS e vedere uno example of this on the JQuery page, ma questo viene spesso eseguito come parte dei miglioramenti delle prestazioni della pagina. Un CDN è ottimizzato per la posizione geografica di un utente, quindi un riferimento a qualsiasi contenuto su un CDN (a differenza del server principale) verrà servito più velocemente. Ha vantaggi per l'esperienza utente. È utile se i tempi di caricamento della pagina sono importanti per la tua base utente.

L'alternativa, e il modo più sicuro, è di conservare una copia della libreria JS nel proprio controllo sorgente e farne riferimento utilizzando la propria infrastruttura. È con te, è una versione fissa e non ci sono sorprese se qualcosa cambia, come la ristrutturazione, i siti che scendono e così via.

Problemi correlati