2009-06-24 10 views
18

Comprimo il mio JS utilizzando YuiCompressor, ma c'è qualche motivo per cui MicrosoftAjax.js non è stato minimizzato? O c'è qualche impostazione per dire di eseguire la versione compressa di esso (se c'è una versione compressa). O devo decompilarlo e ridimensionare la risorsa script da solo?C'è qualche motivo per cui MicrosoftAjax.js non è stato minimizzato?

+0

+1 Buona domanda! –

+0

Bene dalle risposte che ho ricevuto, non sembra esserci comunque per ottenere una versione minified/compressa di MicrosoftAjax.Js fuori dalla scatola. Quindi sembra che il fai da te sia la strada da percorrere, come ho detto nella risposta che ho scelto. Come ho detto a Josh, in ASP.NET 3.5 è possibile combinare gli script ora, http://msdn.microsoft.com/en-us/library/cc488552.aspx. Non siamo ancora passati alla versione 3.5, ma quando lo faremo lo verificherò. Ho letto recensioni contrastanti a riguardo. Inoltre, ho aggiunto jQuery al progetto qualche tempo fa, quindi sto pianificando lentamente tutto ciò che può essere jQuerified. – nickytonline

+2

Il mio commento sopra non è più vero. La risposta di Dave Ward è buona, quindi niente fai da te. – nickytonline

risposta

23

Mi meraviglio di queste risposte fuorvianti.

ASP.NET AJAX ha sempre fornito sia versioni debug che compresse di MicrosoftAjax.js. Una combinazione dell'impostazione di debug di web.config e del controllo a cui viene fatto riferimento.

Inoltre, è possibile utilizzare the "retail" setting per forzare gli script compressi a prescindere.

+1

Grazie per questo Dave. Bello sapere – nickytonline

+0

Brillante, non avevo idea del setting "retail", la nostra azienda ha l'abitudine di distribuire roba in produzione ancora in modalità debug ecc. – Matt

-2

Posso solo supporre che sia stato lasciato così com'è per facilità di comprensione, e come hai già accennato, vedo sapere il motivo per cui non puoi comprimerlo da solo, dopo tutto è solo JavaScript - Sebbene MS potrebbe piacere che tu creda diversamente, non la cospargono di polvere magica per renderla diversa! :)

[E diciamocelo; MS non ha mai avuto paura delle dimensioni del proprio codice, no?]

0

MODIFICA: Nella mia difesa, al momento della stesura di questa risposta non ho avuto esperienza con .NET 3.5; Ora mi rendo conto che hanno apportato diversi miglioramenti tanto necessari in questo settore.


Evidentemente, MS non ritiene che la dimensione del file JavaScript sia molto importante (che è folle). Inoltre, in base alla mia esperienza con MS Ajax, iniettano anche diversi tag SCRIPT (a volte più di 10) nel markup. Questi tag portano script da un gestore WebResource.axd. Quindi devono essere fatte dieci o più richieste solo per ottenere il Javascript necessario per eseguire la pagina! Giusto per aggiungere ridicolo, virano su una stringa di query pazzesca sull'URL del gestore, il che probabilmente impedisce che lo script venga memorizzato nella cache dal browser.

questa follia era abbastanza ragione per me di abbandonare MS Ajax completamente e passare a jQuery, che è di gran lunga migliore biblioteca, soprattutto dal Visual Studio now has Intellisense for jQuery.

+0

Chi ha votato questa risposta e perché? –

+0

Non sono sicuro, ho un voto da me perché condivido la vista su ASP.NET Ajax. –

+0

Anch'io ho downvoted - forse abbiamo uno staff MS su SO? :) Vorrei che i down-elettori spiegassero perché hanno votato così ... – CJM

1

Quale preferireste avere:

  1. MicrosoftAjax.js viene compresso, offuscato già.
  2. MicrosoftAjax.js viene decompresso e aperto in modo che tu possa leggerlo e comprenderlo da solo.
+3

perché non entrambi? jQuery arriva in entrambi, giusto? –

+0

Anche se sarebbe banale avere entrambe le versioni, e anche abbastanza utile, se si dovesse prendere la via più semplice, è necessario fornire la versione non compressa. +1 perché questo non meritava il down-voting. – CJM

+0

@Neil N. Sono d'accordo, perché non entrambi? Quando si sviluppa usa non compresso e in prod usa la versione minified/offuscata. – nickytonline

3

Vedi http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx, è necessario l'opzione

enableScriptMinification="true" 

e aggiungere MicrosoftAjax.js alla lista

+0

Ho letto questo articolo prima, ma grazie per averlo postato qui. Quello che stavo cercando era una soluzione pronta per l'uso da parte di Microsoft Ajax. Sembra che il fai da te sia la strada da seguire per questo. – nickytonline

7

Tutti gli script in System.Web.Extensions sono miniati - ci sono due versioni di ciascuno, come sottolinea l'eccellente risposta di Dave Ward. ScriptManager utilizzerà di default la versione di debug quando web.config è in modalità debug. Giralo per rilasciare con l'impostazione retail o debug = "false", quindi guarda lo script.

Inoltre, gli script serviti tramite WebResourceHandler o ScriptResourceHandler sono in effetti memorizzati nella cache.Vengono memorizzati nella cache nel miglior modo possibile - per sempre, quindi non hanno nemmeno bisogno di 301 in future visite. La querystring è così com'è, perché contiene dati crittografati. È crittografato perché contiene informazioni sulla risorsa dello script, incluso il nome di un assembly, e anche perché impedisce attacchi di flooding della cache.

Non cercando il rappresentante qui, volevo solo dare maggiori dettagli.

+1

Buono a sapersi su WebResourceHandler o ScriptResourceHandler in fase di cache. Quindi presumo che quando apporti modifiche e ridistribuisci, questi vengono nuovamente memorizzati nella cache ma come file diversi perché la querystring crittografata è cambiata? – nickytonline

+2

Sì. Qualsiasi modifica alla risorsa cambierà la querystring, risultando in un elemento appena memorizzato. Inoltre non ho menzionato che anche gli script sono compressi con gzip. – InfinitiesLoop

Problemi correlati