Quelle est la meilleure méthode pour réduire la taille de mes fichiers Javascript et CSS?

lorsqu'on travaille avec de grands et/ou de nombreux fichiers Javascript et CSS, Quelle est la meilleure façon de réduire la taille des fichiers?

20
demandé sur hughdbrown 2008-09-15 22:37:09

17 réponses

en plus de l'utilisation de la compression côté serveur, l'utilisation de codage intelligent est la meilleure façon de maintenir les coûts de bande passante faible. Vous pouvez toujours utiliser des outils comme Packeur JavaScript de Dean Edward , mais pour CSS, prendre le temps d'apprendre Shorthand CSS . Par exemple: use:

background: #fff url(image.gif) no-repeat top left;

...au lieu de:

background-color: #fff;
background-image: url(image.gif);
background-repeat: no-repeat;
background-position: top left;

aussi, utilisez la nature en cascade de CSS. Par exemple, si vous savez que votre site utilise une font-family, définir que pour tous les éléments qui sont dans l'étiquette de corps comme ceci:

body{font-family:arial;}

une autre chose qui peut aider est d'inclure votre CSS et JavaScript en tant que fichiers au lieu de inline ou en tête de chaque page. De cette façon, votre serveur ne doit les servir qu'une seule fois dans le navigateur après que ce navigateur va sortir de la cache.

Incluant Javascript

<script type="text/javascript" src="/scripts/loginChecker.js"></script>

y compris CSS

<link rel="stylesheet" href="/css/myStyle.css" type="text/css" media="All" />
18
répondu Jim 2016-01-14 19:56:17

Minify semble être l'une des façons les plus faciles de réduire Javascript.

activer zip au niveau du serveur web peut aussi aider.

7
répondu Mark Biek 2008-09-15 18:38:11

plutôt que de modifier vos fichiers directement, je recommande de les compresser. La plupart des clients le soutiennent.

je pense que vous verrez que c'est plus facile et tout aussi efficace.

plus de détails sur les aventures de Jeff avec .

6
répondu Michael Haren 2008-09-15 18:40:45

Compression et minify-ing (suppression des espaces blancs) sont un début.

en outre:

  1. combinez tout votre JavaScript et CSS inclut dans un seul fichier. De cette façon, le navigateur peut télécharger les sources en une seule requête au serveur. Faites cette partie de votre processus de construction.

  2. activez la mise en cache au niveau du serveur web en utilisant le cache-control l'en-tête http. Réglez l'expiration à une grande valeur (comme un an) de sorte que le navigateur ne téléchargera la source qu'une seule fois. Pour permettre des éditions futures, incluez un numéro de version sur la chaîne de requête, comme ceci:

<script src="my_js_file.js?1.2.0.1" type="text/javascript"></script>

<link rel="stylesheet" type="text/css" href="my_css_file.css?3.1.0.926" />

3
répondu Dave Lockhart 2008-09-17 13:06:24

je suis surpris que personne n'ait suggéré de gzipper votre code. Un droit ~50% d'économie là!

3
répondu Rakesh Pai 2008-09-21 22:28:19

voir la question: meilleur compresseur javascript

selon que vous allez ou non gzip, vos fichiers JavaScript peuvent changer votre choix de compresseur. (Actuellement Packer n'est pas le meilleur choix si vous allez aussi gzip, mais voir la question ci-dessus pour la meilleure réponse)

2
répondu Sam Hasler 2017-05-23 12:07:19

Dojo Shrinksafe est un compresseur Javascript qui utilise un véritable interpréteur JS, donc il ne cassera pas votre code. Les autres peuvent bien fonctionner, mais Shrinksafe est un bon à utiliser dans un script de construction, puisque vous ne devriez pas avoir à re-tester le script compressé.

1
répondu 2008-09-15 18:48:25

Shrinksafe peut aider: http://shrinksafe.dojotoolkit.org/ Nous sommes à l'utiliser et il fait un assez bon travail. Nous l'exécutons à partir d'une construction ant pour lors de l'empaquetage de notre application web.

1
répondu DustinB 2008-09-15 20:19:06

Helping the YUI compresseur donne de bons conseils sur la façon de modifier vos scripts pour réaliser des économies encore meilleures.

1
répondu Walter Rumsby 2008-09-15 20:28:46

Google héberge une poignée de fichiers pré-compressés de bibliothèque JavaScript que vous pouvez inclure dans votre propre site. Non seulement Google fournit la bande passante pour cela, mais basé sur la plupart des algorithmes de mise en cache de fichiers du navigateur, si l'Utilisateur a déjà téléchargé le fichier de Google pour un autre site, ils ne auront pas à le faire à nouveau pour le vôtre. Un joli petit bonus pour certaines des bibliothèques 90k+ JS là-bas.

1
répondu Eric DeLabar 2008-09-16 20:32:12

Pour javascript, j'utilise de Dean Edwards Javascript Packer . Il a été porté sur .NET, perl, php4, php5, WSH, et il y a même un plugin aptana.

emballage Javascript vient dans quelques saveurs - certains juste rayer les commentaires et whitespace, d'autres vont changer vos noms de variables pour être concis, et d'autres, bien, je ne sais même pas ce qu'ils font, mais la sortie est certainement petite. La compression haut de gamme fonctionne en utilisant la fonction eval (), qui cela impose un fardeau supplémentaire au client, donc si vos scripts sont particulièrement compliqués, ou si vous concevez un matériel plus lent, gardez cela à l'esprit. le packeur Javascript vous donne l'option pour quel niveau de compression vous voulez utiliser.

pour CSS, le mieux que vous pouvez faire est strip whitespace et les commentaires. Heureusement, cela signifie que vous pouvez atteindre cela avec une fonction d'une seule ligne:

function compressCSS($css) {
    return
        preg_replace(
            array('@\s\s+@','@(\w+:)\s*([\w\s,#]+;?)@'),
            array(' ',''),
            str_replace(
                array("\r","\n","\t",' {','} ',';}'),
                array('','','','{','}','}'),
                preg_replace('@/\*[^*]*\*+([^/][^*]*\*+)*/@', '', $css)
            )
        )
    ;
}

alors que cette fonction et le packeur Javascript réduiront la taille des fichiers individuels, pour obtenir la meilleure performance de votre site, vous voudrez également réduire le nombre de requêtes HTTP que vous faites. Chaque fichier Javascript et CSS est une requête séparée, donc les combiner dans un fichier chacun donnera le résultat optimal. Au lieu d'essayer de maintenir un seul fichier bohemoth JS, vous pouvez utiliser le programme/technique que j'ai écrit sur mon blog (plug personnel sans vergogne) à http://spadgos.com/?p=32

le programme lit essentiellement un fichier de type "script de construction" qui combinera et compressera simultanément plusieurs fichiers Javascript et CSS dans un (de chaque) pour vous (ou plus, si vous voulez). Il existe plusieurs options pour la sortie et l'affichage de tous les fichiers. Il y a une plus grande écriture là-haut, et la source est librement disponible.

0
répondu nickf 2008-09-15 18:38:16

je donnerais un essai-drive aux nouveaux optimiseurs d'exécution en ASP.Net publié sur http://www.codeplex.com/NCOptimizer

0
répondu 2008-09-15 20:21:35

compresseur YUI fait un assez bon travail à la compression à la fois Javascript et CSS.

0
répondu Rexxars 2008-09-16 06:15:17

YUI Compressor A mon vote, pour la simple raison qu'au lieu d'effectuer des transformations d'expressions régulières sur le code, il construit en fait un arbre d'analyse du code, similaire à un interpréteur Javascript, et le comprime ensuite de cette façon. Il est habituellement très prudent sur la façon dont il gère la compression des identificateurs.

en plus, il a un mode de compression CSS, avec lequel je n'ai pas joué autant.

0
répondu Jonathan Arkell 2008-09-16 06:36:31

CssTidy est le meilleur CSS optimiseur de qui, j'en suis conscient. Il supprime (configurablement) les commentaires, élimine les espaces blancs, réécrit pour utiliser les nombreuses règles de sténographie nickf mentioned , etc. Compresser le résultat permet aussi, comme d'autres l'ont mentionné.

le taux de compression peut être assez dramatique, et il vous permet de commenter longuement votre CSS sans vous soucier de la taille du fichier.

Malheureusement, ce niveau de prétraitement interagit avec certains des "hacks css" populaires de manière imprévisible (ou prévisible mais non désirée). certains travaillent , d'autres non, et certains nécessitent des paramètres de configuration qui réduisent le niveau de compression pour d'autres choses (en particulier les commentaires).

0
répondu Doug McClean 2017-05-23 12:33:51

Essayer web compresseur outils de Boryi pour compresser les standards de votre fichier HTML (sans code Javascript et css code intégré, mais peut être lié ou importés), du code Javascript (correctement terminé avec ;), et le code css.

0
répondu 2009-06-17 14:25:00

j'ai trouvé JSCompress une bonne façon non seulement de miniaturiser un JavaScript, mais de combiner plusieurs scripts. Utile si vous n'utilisez les différents scripts qu'une seule fois. Sauvé 70% avant la compression (et quelque chose de similaire après la compression aussi).

N'oubliez pas d'ajouter les mentions de droits d'auteur par la suite.

0
répondu Ken Sharp 2015-12-20 22:03:48