Compressez les images, PDF, vidéos et audios stockés sur votre site, localement ou via des API cloud, générez des copies WebP, et laissez le serveur web servir de manière transparente les versions optimisées à la place des originaux. Vos fichiers originaux ne sont jamais modifiés.

Compression d'images

Optimisez les fichiers JPEG, PNG, GIF et SVG localement (jpegoptim, optipng, pngquant, svgo, gifsicle) ou via les API TinyPNG, ShortPixel, Kraken.io et reSmush.it.

Génération WebP

Créez une copie .webp plus légère pour chaque image JPEG/PNG. Les navigateurs qui prennent en charge WebP la reçoivent automatiquement ; les autres continuent de recevoir le format d'origine.

Compression de PDF

Réduisez la taille des fichiers PDF avec Ghostscript (préréglages screen / ebook / printer) ou via le service cloud ConvertAPI.

Vidéo & Audio

Ré-encodez les vidéos (H.264/VP9, CRF configurable) et les audios (débit configurable) avec FFmpeg. Désactivé par défaut, car le transcodage est gourmand en CPU.

Non destructif

Les copies optimisées sont stockées dans un dossier miroir dédié. Supprimez-les à tout moment : les fichiers originaux sont à nouveau servis instantanément, avec ou sans l'add-on.

Conçu pour les grandes bibliothèques

L'analyse par lots et les étapes de traitement courtes maintiennent une faible consommation de mémoire et ne bloquent jamais vos visiteurs, même avec des dizaines de milliers de fichiers. Fonctionne avec ou sans worker de file d'attente.

Comment ça marche

  1. Analyse : l'add-on indexe chaque fichier optimisable de votre stockage public dans son propre catalogue (chemin, type, taille).
  2. Optimisation : chaque fichier est compressé par le moteur que vous avez sélectionné. Lorsque le résultat est plus petit que l'original (d'au moins le seuil configuré), la copie optimisée est enregistrée dans le dossier miroir storage/app/public/_optimized/<same path>. Pour les images, une copie .webp optionnelle est également générée.
  3. Diffusion : les règles de réécriture ajoutées à votre serveur web vérifient, pour chaque requête /storage/..., si une copie optimisée (ou une variante WebP, lorsque le navigateur l'accepte) existe. Si oui, elle est servie ; sinon, le fichier original est servi exactement comme avant.
La sécurité avant tout : les originaux ne sont jamais touchés, les règles de réécriture ne s'appliquent que lorsqu'un fichier optimisé existe réellement sur le disque, et la désactivation de l'add-on supprime les règles. Le site fonctionne de manière identique avec ou sans File Optimizer, il devient simplement plus léger avec.

Cas d'utilisation

Accélérer un site existant

Des années de téléversements s'accumulent. Analysez le stockage une fois, cliquez sur “Tout optimiser”, et laissez l'add-on compresser toute votre bibliothèque multimédia en arrière-plan : puis servez du WebP aux ~97 % de navigateurs qui le prennent en charge.

Améliorer les Core Web Vitals & le SEO

Des images plus petites signifient un LCP plus rapide et de meilleurs scores PageSpeed. L'en-tête Vary: Accept est correctement défini afin que les caches et les CDN continuent de fonctionner.

Réduire les coûts de bande passante & de stockage

Des économies de 30 à 70 % sur les images sont courantes. La page de vue d'ensemble suit le nombre exact d'octets économisés par type de fichier.

Compresser les documents lourds

Les PDF scannés et les brochures rétrécissent considérablement avec le préréglage ebook de Ghostscript tout en restant parfaitement lisibles à l'écran.

Prérequis

  • LaraClassifier / JobClass v19.0.0 ou ultérieur
  • PHP 8.3+, MySQL 8.0+
  • Le lien symbolique du stockage public (php artisan storage:link), standard sur chaque installation
  • Binaires locaux optionnels selon les moteurs que vous activez :
    • Images : jpegoptim, optipng, pngquant, svgo, gifsicle
    • WebP : cwebp (ou les extensions PHP Imagick / GD)
    • PDF : gs (Ghostscript)
    • Vidéos & audios : ffmpeg
Pas de binaires ? Aucun problème pour les images et les PDF. Les images peuvent être compressées par un moteur cloud (TinyPNG, ShortPixel, Kraken.io, ou reSmush.it qui ne demande même pas de clé) et les PDF par ConvertAPI : seule une clé API est alors nécessaire. Et même sans aucun binaire d'image, les copies WebP peuvent toujours être générées via Imagick, GD ou ConvertAPI. La compression des vidéos et des audios, en revanche, nécessite toujours ffmpeg sur le serveur.

Installation

Étape 1 : Téléverser l'add-on

Allez dans Panneau d'administration → Extensions → Add-ons, cliquez sur Téléverser un add-on et déposez le fichier .zip de l'add-on dans la zone de téléversement (50 Mo maximum). L'archive est extraite dans extensions/addons/fileoptimizer/ et File Optimizer apparaît dans la liste, désactivé.

Impossible de téléverser depuis le navigateur ? Décompressez l'archive sur votre ordinateur et copiez le dossier de l'add-on dans extensions/addons/fileoptimizer/ par FTP ou SSH : son fichier addon.json doit se trouver directement dans ce dossier. Ouvrez ensuite Panneau d'administration → Extensions → Add-ons. La page analyse extensions/addons/ à chaque chargement : l'add-on est donc listé immédiatement (le bouton Synchroniser lance la même analyse à la demande).

Étape 2 : Activer l'add-on

Cliquez sur Activer sur la carte File Optimizer. C'est un add-on payant : une fenêtre demande son code d'achat, qui est vérifié avant toute autre opération. Un code invalide est refusé dans la fenêtre et rien n'est modifié.

Une fois le code accepté, l'activation se fait en une seule passe : elle crée les tables de base de données de l'add-on (ses migrations), enregistre ses permissions, exécute ses seeders et publie ses assets publics. Rechargez la page pour voir sa nouvelle entrée dans la section Add-ons de la barre latérale d'administration.

Étape 3 : Configurer

Ouvrez Panneau d'administration → Optimiseur de fichiers depuis la section Add-ons de la barre latérale et configurez l'add-on : voir Démarrage rapide (2 minutes).

Code d'achat (clé de licence)

File Optimizer est vendu comme un produit distinct, il possède donc son propre code d'achat (clé de licence) : différent du code d'achat de l'application principale et de celui de tout autre add-on. Il vous est demandé lorsque vous activez File Optimizer dans Panneau d'administration → Extensions → Add-ons.

Nos produits sont vendus sur trois plateformes. La manière dont vous recevez un code d'achat dépend de l'endroit où vous avez acheté le produit.

Plateforme / Marketplace Comment vous obtenez le code d'achat Où le retrouver
Boutique bedigit.com
Achat sur le site (Boutique)
Généré automatiquement lorsque la commande est payée, puis envoyé par e-mail, soit dans un e-mail de licence dédié, soit dans l'e-mail de confirmation de commande. Mon compte → Mes licences sur bedigit.com
Gumroad Créé dès que Gumroad nous notifie la vente, puis envoyé dans un e-mail séparé, en plus du reçu Gumroad. L'e-mail de licence, votre Bibliothèque Gumroad, et Mon compte → Mes licences sur bedigit.com
Envato Market
CodeCanyon
Émis par Envato, et non par nous, et jamais envoyé par e-mail : vous le téléchargez vous-même depuis votre compte Envato. Compte Envato → Downloads → License certificate & purchase code
Vérifiez votre dossier spam. Pour les achats effectués sur la Boutique bedigit.com et sur Gumroad, le code d'achat est livré par e-mail. Les e-mails de licence automatiques sont très souvent filtrés, donc si le message n'est pas dans votre boîte de réception, regardez dans votre dossier spam / courrier indésirable avant de contacter le support, et ajoutez notre adresse d'expédition à vos contacts ou à votre liste d'autorisation.

1. Boutique bedigit.com (achat sur le site)

  • Dès que le statut de paiement de la commande devient Payé, une clé de licence est générée automatiquement pour chaque article sous licence de la commande (une clé par unité achetée : acheter 3 unités donne 3 clés distinctes).
  • Elle est envoyée par e-mail à l'adresse utilisée pour la commande, soit dans un e-mail de licence dédié, soit dans l'e-mail de confirmation de commande. Vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
  • La clé reste disponible dans votre compte sous Mon compte → Mes licences. Les clés sont masquées dans la liste ; ouvrez la page de détail de la licence pour révéler et copier la clé complète, voir les domaines sur lesquels elle est activée, et désactiver un domaine pour libérer un emplacement d'activation.
  • La facture correspondante se trouve sous Mon compte → Mes commandes.

2. Gumroad

  • Un achat sur Gumroad produit deux e-mails distincts : le reçu Gumroad (envoyé par Gumroad, donnant accès aux fichiers) et un e-mail de clé de licence (envoyé par bedigit.com) qui contient votre code d'achat.
  • L'e-mail de clé de licence est généré dès que Gumroad nous notifie la vente, il arrive donc normalement quelques secondes après le paiement. Ici aussi, vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
  • Lorsque le produit Gumroad utilise la fonctionnalité de clé de licence propre à Gumroad, la même clé apparaît également dans votre reçu Gumroad et sous Bibliothèque → votre achat sur gumroad.com.
  • Utilisez la même adresse e-mail sur bedigit.com que sur Gumroad : vos clés sont alors liées automatiquement à votre compte et listées sous Mon compte → Mes licences, même si vous vous inscrivez après l'achat. Vous pouvez également ajouter une clé Gumroad manuellement depuis Mon compte → Mes licences Gumroad.

3. Envato Market (CodeCanyon)

  • Les codes d'achat Envato sont émis et livrés par Envato Market, jamais envoyés par e-mail par nous, il n'y a donc rien à chercher dans votre dossier spam : vous récupérez le code depuis votre compte Envato.
  • Connectez-vous à votre compte Envato / CodeCanyon, ouvrez la page Downloads, trouvez l'article, et choisissez License certificate & purchase code dans le menu déroulant Download. Le code est inscrit dans ce certificat.
  • Un code d'achat Envato ressemble à 12345678-90ab-cdef-1234-567890abcdef (8-4-4-4-12 caractères). Il ne change jamais, et le renouvellement du support de l'article n'en émet pas de nouveau.
  • Article officiel d'Envato : Where Is My Purchase Code?
Vous avez perdu votre code d'achat ? Recherchez dans votre boîte mail (dossier spam inclus) “licence” ou “code d'achat”, puis consultez Mon compte → Mes licences sur bedigit.com pour les achats Boutique et Gumroad, ou Downloads → License certificate sur Envato. S'il est toujours introuvable, ouvrez un ticket sur notre Centre d'aide avec votre numéro de commande (Boutique), l'ID de vente Gumroad ou l'e-mail de l'acheteur (Gumroad), ou votre nom d'utilisateur Envato et le nom de l'article (Envato).

Démarrage rapide (2 minutes)

  1. Activez l'add-on.
  2. Allez dans Panneau d'administration → Add-ons → Optimiseur de fichiers → Vue d'ensemble et cliquez sur Scanner le stockage.
  3. Cliquez sur Tout optimiser et gardez la page ouverte jusqu'à ce que la barre de progression soit terminée (ou laissez votre worker de file d'attente faire le travail).
  4. Ouvrez Optimiseur de fichiers → Paramètres, allez dans l'onglet Règles de réécriture et cliquez sur Tester les règles (sonde en direct) pour confirmer que les copies optimisées sont bien servies (sous Nginx, collez d'abord l'extrait généré dans la configuration de votre serveur : voir Nginx).

Admin : Page Vue d'ensemble

Panneau d'administration → Add-ons → Optimiseur de fichiers → Vue d'ensemble affiche en un coup d'œil :

  • le nombre total de fichiers indexés et l'espace total économisé,
  • une carte par type de fichier (Images, PDF, Vidéos, Audios) avec ses compteurs (total, optimisés, en attente, échoués) son utilisation disque et ses économies, ainsi que des boutons rapides Parcourir et Optimiser,
  • les exécutions d'optimisation récentes et leurs résultats,
  • la barre de progression en direct d'une exécution en cours (elle survit aux rechargements de page).

Un badge « en pause » sur une carte signifie que l'optimisation est désactivée pour ce type dans les paramètres.

La page Vue d'ensemble et les pages de fichiers requièrent la permission admin.fileoptimizer.view ; l'analyse, l'optimisation et la suppression des copies optimisées requièrent admin.fileoptimizer.optimize.

Analyser le stockage

L'analyseur parcourt le stockage public et indexe chaque fichier dont l'extension correspond à un type activé. Il s'exécute par lots courts (quelques secondes chacun), il peut donc indexer des dizaines de milliers de fichiers sans expiration de délai ni pics de mémoire.

  • Les nouveaux fichiers sont ajoutés comme En attente.
  • Les fichiers modifiés (taille ou date changée depuis la dernière analyse) sont remis En attente et leurs copies optimisées obsolètes sont supprimées immédiatement, afin qu'un contenu périmé ne soit jamais servi.
  • Les fichiers supprimés sont retirés du catalogue ainsi que leurs copies optimisées.

Relancez l'analyse chaque fois que vous ajoutez ou remplacez des fichiers. Vous pouvez aussi l'automatiser : voir Commandes console.

Parcourir les fichiers

La barre latérale propose une page par type : Images, PDF, Vidéos et Audios. Chaque page liste les fichiers indexés avec une miniature (images), le chemin, la taille d'origine, la taille optimisée, le pourcentage d'économie, le badge WebP et le statut.

Filtres & Recherche

L'en-tête de la liste propose :

  • un champ de recherche portant sur le chemin du fichier (met à jour le tableau au fur et à mesure de la saisie),
  • un filtre de statut (En attente, En file d'attente, En cours, Optimisé, Ignoré, Échoué),
  • un filtre d'extension listant les extensions réellement présentes,
  • un bouton Effacer réinitialisant tous les filtres.

Le filtrage ne rafraîchit que le tableau, sans recharger la page.

Actions sur les fichiers

BoutonAction
⚡ OptimiserOptimise ce fichier immédiatement et met à jour la ligne (sert aussi à ré-optimiser après un changement de moteurs ou de niveaux).
🗑 Supprimer les copies optimiséesSupprime la copie optimisée et la copie WebP de ce fichier. L'original est à nouveau servi instantanément et le fichier repasse En attente.
Lien du chemin de fichierOuvre le fichier dans un nouvel onglet (tel que servi par le site : vous voyez donc la version optimisée lorsque les règles sont actives).
Statuts : Optimisé = une copie optimisée et/ou une copie WebP est servie · Ignoré = le résultat n'était pas plus petit que l'économie minimale configurée, l'original continue d'être servi · Échoué = le moteur a renvoyé une erreur (survolez le badge pour la lire).

Optimiser les fichiers

Fichier unique

Cliquez sur le bouton éclair de n'importe quelle ligne. La ligne se met à jour sur place avec la nouvelle taille, l'économie et le statut.

En masse & Tout optimiser

  • Sélection : cochez les cases (ou la case de l'en-tête) et cliquez sur Optimiser la sélection (n).
  • Type entier : cliquez sur Optimiser tous les <type> dans l'en-tête de la page.
  • Tout : cliquez sur Tout optimiser sur la page Vue d'ensemble.

Seuls les fichiers au statut En attente ou Échoué sont mis en file d'attente ; les types désactivés dans les paramètres sont ignorés.

Barre de progression

Chaque exécution en masse affiche une barre de progression avec les compteurs traités / optimisés / ignorés / échoués et les octets économisés jusqu'à présent, ainsi qu'un bouton Annuler. Deux modes de traitement existent (voir Paramètres généraux) :

  • Piloté par le navigateur (par défaut lorsqu'aucun worker de file d'attente n'est configuré) : la page envoie une courte requête toutes les quelques secondes ; chacune traite une poignée de fichiers. Gardez la page ouverte jusqu'à ce que la barre soit terminée.
  • File d'attente : un job par fichier est envoyé à votre worker de file d'attente ; la page ne fait qu'interroger la progression. Vous pouvez quitter la page en toute sécurité.

L'annulation d'une exécution remet les fichiers restants En attente.

Supprimer les copies optimisées

Pour revenir aux fichiers originaux : utilisez le bouton corbeille de la ligne pour un seul fichier, ou sélectionnez plusieurs lignes et cliquez sur Supprimer les optimisées (n). Les copies optimisées et WebP sont supprimées du dossier miroir et les originaux sont à nouveau servis immédiatement.

Paramètres : Général

La page des paramètres se trouve dans Panneau d'administration → Add-ons → Optimiseur de fichiers → Paramètres. Elle comporte six onglets : Général, Images, PDF, Vidéos, Audios et Règles de réécriture. Son ouverture requiert la permission admin.setting.view et son enregistrement admin.setting.edit (l'entrée de la barre latérale est affichée aux utilisateurs possédant admin.setting.view). La carte Traitement de l'onglet Général contient :

ParamètreDescriptionPar défaut
Mode de traitementAutomatique utilise la file d'attente lorsque la connexion de file d'attente par défaut (QUEUE_CONNECTION dans le .env) n'est pas sync, et la boucle pilotée par le navigateur sinon. Peut être forcé sur File d'attente ou Piloté par le navigateur.Automatique
Fichiers par étapeFichiers traités par étape pilotée par le navigateur (1–25). Gardez une valeur basse sur un hébergement mutualisé.4
Budget de temps par étapeLimite de temps souple (5–60 secondes) d'une étape pilotée par le navigateur.20
Économie minimale (%)0–90. Une copie optimisée qui n'économise pas au moins ce pourcentage est écartée (Ignoré) et l'original continue d'être servi.2
Dossiers à analyserRestreint l'analyse à des dossiers spécifiques (liste dynamique : laissez vide pour analyser tout le stockage public). Accepte des dossiers relatifs au stockage, des chemins absolus du serveur ou des chemins relatifs à la racine du document ; tout est normalisé automatiquement.vide
Dossiers à exclureDossiers que l'analyseur ignore toujours (mêmes formats acceptés). Le dossier miroir (_optimized) et le propre dossier de l'add-on (addons/fileoptimizer) sont toujours exclus.vide

Paramètres : Images & WebP

ParamètreDescriptionPar défaut
Activer l'optimisationInterrupteur principal pour le type image.Activé
Moteur de compressionLocal (chaîne spatie/image-optimizer) ou les API TinyPNG, ShortPixel, Kraken.io, reSmush.it.Local
Niveau d'optimisationSans perte (aucune perte de qualité), Équilibré (perte à peine perceptible) ou Agressif (économies maximales). Détermine les bornes de qualité de jpegoptim/pngquant et les modes avec perte des API.Équilibré
Taille max de fichier pour les APILes fichiers dépassant cette taille (0–512 Mo) ne sont pas envoyés aux API distantes. 0 supprime la limite.32
Générer des copies WebPCrée une copie .webp pour les images JPEG/PNG, servie automatiquement aux navigateurs compatibles. Conservée uniquement lorsqu'elle est plus petite que toutes les autres variantes.Activé
Convertisseur WebPLocal (cwebp → Imagick → GD, premier disponible) ou ConvertAPI.Local
Qualité WebP1–100.80
Bon à savoir : si aucun binaire d'image local n'est installé mais que la génération WebP est possible, les images sont tout de même optimisées en mode “WebP uniquement” au lieu d'échouer.

Paramètres : PDF

ParamètreDescriptionPar défaut
Activer l'optimisationInterrupteur principal pour le type PDF.Activé
Moteur de compressionLocal (Ghostscript) ou ConvertAPI.Local
Préréglage de compressionScreen (72 dpi, compression maximale), Ebook (150 dpi, équilibré) ou Printer (300 dpi, haute qualité).Ebook

Paramètres : Vidéos

La compression vidéo s'exécute localement via FFmpeg et est désactivée par défaut : le transcodage est gourmand en CPU et doit être un choix explicite.

ParamètreDescriptionPar défaut
Activer l'optimisationInterrupteur principal pour le type vidéo.Désactivé
Qualité (CRF)18–40. Plus bas = meilleure qualité et fichiers plus gros ; 28 est un bon équilibre.28
Préréglage de vitesse d'encodagePréréglage x264 de ultrafast à veryslow. Les préréglages plus lents compressent mieux.medium
Hauteur maxRéduit les vidéos plus grandes à cette hauteur (n'agrandit jamais). 0 conserve la résolution.0
Débit audioDébit AAC/Opus de la piste audio.128k

La copie optimisée conserve le conteneur/l'extension d'origine (WebM reste WebM avec VP9/Opus, MP4 reste MP4 avec H.264/AAC), afin que les règles de réécriture puissent la servir sous l'URL d'origine.

Paramètres : Audios

La compression audio s'exécute également localement via FFmpeg et est désactivée par défaut.

ParamètreDescriptionPar défaut
Activer l'optimisationInterrupteur principal pour le type audio.Désactivé
DébitDébit cible (64k–320k). Les sources sans perte (WAV/FLAC) ne sont recompressées qu'au sein de leur propre famille de codecs, jamais converties en format avec perte.128k

Paramètres : Binaires du serveur

Dans la carte Binaires du serveur de l'onglet Général, vous pouvez :

  • définir un chemin absolu pour chaque binaire lorsqu'il se trouve en dehors du PATH système (fréquent avec PHP-FPM),
  • cliquer sur Vérifier les binaires pour voir quels outils sont installés et leur version : un badge vert Disponible ou rouge Introuvable apparaît à côté de chaque champ,
  • suivre le lien Site web & téléchargement sous chaque champ pour installer un outil manquant.

Installation typique sur un serveur Debian/Ubuntu :

sudo apt-get install jpegoptim optipng pngquant gifsicle webp ghostscript ffmpeg
sudo npm install -g svgo
Astuce : laissez un champ vide pour utiliser le nom de la commande depuis le PATH système.

Paramètres : Identifiants API

Les moteurs cloud ne nécessitent qu'une clé API, saisie dans la carte Identifiants API de l'onglet Images (un lien “Obtenir votre clé API” est affiché sous chaque champ). Le secret ConvertAPI saisi à cet endroit sert aussi au moteur PDF et au convertisseur WebP lorsque vous choisissez ConvertAPI :

FournisseurIdentifiantsOù les obtenir
TinyPNG / TinyJPGClé APItinypng.com/developers (500 images gratuites/mois)
ShortPixelClé APIshortpixel.com/api-settings
Kraken.ioClé API + secretkraken.io/account/api-credentials
reSmush.itaucun (gratuit)5 Mo max par image
ConvertAPISecretconvertapi.com/a/auth (compression PDF & conversion WebP)

Les clés sont stockées dans la base de données (table des paramètres).

Servir les fichiers optimisés : Règles de réécriture

Les règles de réécriture font servir par le serveur web, pour chaque requête sous /storage/ :

  1. la variante WebP lorsque le navigateur accepte WebP et qu'une copie .webp existe (avec le bon Content-Type et un en-tête Vary: Accept pour les caches),
  2. sinon la copie optimisée lorsqu'elle existe,
  3. sinon le fichier original, exactement comme avant.

Gérez tout depuis l'onglet Règles de réécriture de la page des paramètres : serveur web détecté, statut des règles, boutons d'installation / suppression, sonde en direct et extraits prêts à copier.

Apache / LiteSpeed

Les règles sont écrites automatiquement dans public/.htaccess, à l'intérieur d'un bloc clairement délimité (# BEGIN FileOptimizer … # END FileOptimizer) :

  • installées lorsque l'add-on est activé (sauf si le serveur web est détecté comme Nginx),
  • rafraîchies lorsque les paramètres sont enregistrés, si le bloc est déjà installé,
  • supprimées lorsque l'add-on est désactivé ou retiré.

Vous pouvez aussi installer/supprimer le bloc manuellement avec les boutons de la page des paramètres.

Nginx

Nginx ne peut pas être configuré automatiquement depuis PHP. La page des paramètres génère un extrait prêt à coller (un bloc map pour le contexte http {} et un bloc location pour votre contexte server {}). Collez-le dans la configuration de votre serveur, exécutez nginx -t et rechargez nginx.

Tester les règles (sonde en direct)

Cliquez sur Tester les règles (sonde en direct) : l'add-on crée un fichier de test temporaire ainsi qu'une copie “optimisée”, demande l'URL publique en HTTP, et indique quelle variante votre serveur web a réellement renvoyée, y compris si la variante WebP est livrée. Cela fonctionne sur tout type de serveur et constitue la vérification définitive que tout est correctement câblé.

Remarque : la sonde effectue une requête HTTP du serveur vers lui-même. Sur les serveurs de développement mono-thread (php artisan serve), elle expirera, c'est normal ; testez sur votre véritable serveur web.

Commandes console

# Index the storage (same as the Scan button)
php artisan fileoptimizer:scan

# Optimize every pending file (all types, or one type, optionally capped)
php artisan fileoptimizer:optimize
php artisan fileoptimizer:optimize --type=image
php artisan fileoptimizer:optimize --type=pdf --limit=100

fileoptimizer:optimize traite les fichiers directement, dans la commande elle-même : aucun worker de file d'attente n'est nécessaire. Automatisation cron typique (analyser puis optimiser les nouveaux fichiers chaque nuit) :

0 3 * * * cd /path/to/your/site && php artisan fileoptimizer:scan && php artisan fileoptimizer:optimize >> /dev/null 2>&1

Workers de file d'attente

Lorsque QUEUE_CONNECTION est défini sur database, redis, etc., et que le mode de traitement est Automatique ou File d'attente, les exécutions en masse envoient un job par fichier sur la file d'attente fileoptimizer. Assurez-vous que votre worker l'écoute :

php artisan queue:work --queue=fileoptimizer,default

Pas de worker ? Conservez le mode Automatique : la boucle pilotée par le navigateur n'a besoin de rien d'autre qu'une page d'administration ouverte.

Désactivation & Suppression

  • Désactiver : le bloc File Optimizer est retiré de public/.htaccess : Apache/LiteSpeed servent à nouveau les originaux. Le catalogue, les paramètres et les copies optimisées sont conservés ; la réactivation réinstalle les règles (sauf sous Nginx) et restaure tout.
  • Supprimer : supprime en plus les tables de l'add-on, tout le dossier miroir (storage/app/public/_optimized/) et les fichiers de l'add-on. Vos fichiers originaux restent intacts.
  • Nginx : l'extrait que vous avez collé dans la configuration de votre serveur n'est jamais retiré automatiquement : supprimez-le et rechargez Nginx après avoir désactivé ou supprimé l'add-on.

Mise à jour

Une mise à jour ne remplace que les fichiers de l'add-on. Ses tables et ses données, ses paramètres, son état d'activation et son code d'achat enregistré sont tous conservés : ne désactivez et ne supprimez pas l'add-on avant de le mettre à jour. Sauvegardez tout de même votre base de données au préalable.

Méthode 1 : Téléverser la nouvelle version (recommandé)

  1. Téléchargez le dernier fichier .zip de l'add-on.
  2. Allez dans Panneau d'administration → Extensions → Add-ons et cliquez sur Téléverser un add-on.
  3. Déposez le fichier .zip dans la zone de téléversement.
  4. Comme File Optimizer est déjà installé, une demande de confirmation affiche la version installée et la nouvelle. Cliquez sur Remplacer : le dossier extensions/addons/fileoptimizer/ est remplacé par les nouveaux fichiers. Annuler la demande abandonne le téléversement.

Méthode 2 : Remplacer les fichiers à la main

  1. Par FTP ou SSH, supprimez le dossier extensions/addons/fileoptimizer/ et envoyez le nouveau à sa place. Remplacez le dossier entier plutôt que de copier par-dessus, afin que les fichiers retirés par la nouvelle version ne subsistent pas.
  2. Ouvrez Panneau d'administration → Extensions → Add-ons : la page relit addon.json et la carte affiche le nouveau numéro de version.

Une fois les fichiers remplacés

Nouvelles tables ou colonnes. Lorsqu'une nouvelle version en ajoute, créez-les en exécutant php artisan migrate --force en SSH, ou sans SSH en cliquant sur Désactiver puis Activer sur la carte de l'add-on : l'activation exécute toutes les migrations en attente (et redemande le code d'achat). Vos données ne sont pas touchées dans les deux cas.

Si votre installation met en cache sa configuration ou ses routes (php artisan config:cache, route:cache), exécutez php artisan optimize:clear après la mise à jour.

Désinstallation

Éteindre un add-on sans rien perdre, c'est le désactiver : allez dans Panneau d'administration → Extensions → Add-ons, cliquez sur Désactiver sur la carte File Optimizer et confirmez.

  • L'add-on n'est plus chargé : ses routes, ses vues, son entrée dans la barre latérale d'administration et ses pages publiques ne répondent plus.
  • Ses tables de base de données et toutes les données qu'elles contiennent sont conservées, et ses fichiers restent dans extensions/addons/fileoptimizer/. Rien n'est supprimé.
  • Ses permissions et son code d'achat enregistré restent en base de données. Seule la suppression les efface.
  • La désactivation est refusée tant qu'un autre add-on actif dépend de celui-ci : désactivez d'abord cet add-on.

Cliquez sur Activer sur la même carte pour le rallumer. Comme lors de la première activation, le code d'achat est redemandé et vérifié ; ensuite les migrations en attente sont exécutées, les assets republiés, et l'add-on reprend exactement là où il s'était arrêté.

Suppression

La suppression est définitive et détruit les données de l'add-on. Le bouton Supprimer n'apparaît que sur un add-on désactivé : la suppression se fait donc toujours en deux temps :

  1. Désactivez File Optimizer (voir Désinstallation).
  2. Cliquez sur Supprimer sur sa carte et confirmez la demande.

Le panneau d'administration, en une seule passe :

  • exécute le hook de désinstallation de l'add-on, s'il en fournit un, tant que son code est encore sur le disque ;
  • révoque les permissions déclarées dans son addon.json ;
  • annule ses migrations, ce qui supprime ses tables de base de données et toutes les lignes qu'elles contiennent, et purge ses entrées de la table migrations, afin qu'une réinstallation ultérieure reparte de zéro ;
  • supprime ses assets publiés : public/addons/fileoptimizer/, public/vendor/fileoptimizer/ et storage/app/public/addons/fileoptimizer/ ;
  • supprime le dossier de l'add-on extensions/addons/fileoptimizer/ ;
  • supprime sa ligne dans la table addons (le code d'achat enregistré disparaît avec elle) et vide le cache de l'application.
Cette action est irréversible. Sauvegardez votre base de données avant de supprimer un add-on dont les données peuvent encore vous servir : le réinstaller plus tard crée des tables vides, pas votre ancien contenu, et redemande le code d'achat.

La suppression est refusée, avec un message explicatif et avant toute destruction, lorsque l'add-on est encore actif, lorsqu'un autre add-on actif en dépend, ou lorsque l'utilisateur du serveur web (PHP) ne peut pas supprimer extensions/addons/fileoptimizer/. Dans ce dernier cas, donnez à cet utilisateur le droit d'écriture sur le dossier et sur son parent, puis réessayez.

Supprimer le dossier en FTP ou en SSH n'est pas équivalent : l'add-on est seulement éteint, et ses tables, ses entrées dans la table migrations et sa ligne addons restent en place. Utilisez plutôt Supprimer dans le panneau d'administration.

Dépannage

Les fichiers échouent avec “engine is not configured”

Le moteur sélectionné nécessite des binaires ou des identifiants qui sont manquants. Lancez Vérifier les binaires sur la page des paramètres, installez les outils manquants (des liens sont fournis sous chaque champ) ou passez à un moteur cloud et saisissez sa clé API.

La sonde indique que les copies optimisées ne sont PAS servies

  • Apache : vérifiez que le bloc est installé (Paramètres → Règles de réécriture), que mod_rewrite et AllowOverride All sont activés, et que public/.htaccess est accessible en écriture.
  • Nginx : collez l'extrait généré, exécutez nginx -t, rechargez, relancez la sonde.

“Could not write public/.htaccess”

Corrigez les permissions du fichier pour que PHP puisse y écrire (par ex. chown www-data public/.htaccess ou chmod 664), puis cliquez à nouveau sur Installer les règles.

L’exécution en masse ne progresse pas en mode file d'attente

Votre worker n'est pas en cours d'exécution ou n'écoute pas la file d'attente fileoptimizer. Démarrez-le (voir Workers de file d'attente) ou basculez le mode de traitement sur Piloté par le navigateur et relancez.

La plupart des images finissent “Ignorées”

Elles sont déjà bien compressées : le résultat n'a pas dépassé le seuil d'Économie minimale. C'est voulu (servir une copie à peine plus petite n'en vaut pas la peine). Essayez le niveau Agressif ou activez WebP pour des économies supplémentaires.

Un fichier a changé mais l'ancienne version optimisée s'affiche

Lancez une Analyse : les fichiers modifiés sont détectés par taille/date, leurs copies obsolètes sont supprimées immédiatement et ils sont mis en file d'attente pour ré-optimisation.

FAQ

Mes fichiers originaux sont-ils modifiés ?

Jamais. Les copies optimisées sont stockées dans un dossier miroir séparé ; supprimez-les à tout moment pour servir à nouveau les originaux.

Que se passe-t-il si je désactive l'add-on ?

Les règles de réécriture sont retirées de public/.htaccess et le site sert les fichiers originaux, exactement comme avant l'installation de l'add-on. Rien d'autre ne change. Sous Nginx, retirez vous-même l'extrait de la configuration de votre serveur.

Est-ce que cela fonctionne sur un hébergement mutualisé ?

Oui. Le mode piloté par le navigateur ne nécessite ni worker de file d'attente ni accès shell ; le moteur reSmush.it fonctionne même sans aucun binaire ni API payante. Seul le fichier .htaccess doit être accessible en écriture pour l'installation automatique des règles.

WebP va-t-il casser les navigateurs qui ne le prennent pas en charge ?

Non. La variante WebP n'est servie que lorsque le navigateur annonce explicitement sa prise en charge via son en-tête Accept ; tous les autres reçoivent le format d'origine. L'en-tête Vary: Accept maintient les proxys et les CDN cohérents.

Combien de CPU consomme-t-il ?

Le travail s'effectue par étapes courtes (quelques fichiers à la fois) précisément pour que le front-end ne ralentisse jamais. Le transcodage vidéo/audio est plus lourd, c'est pourquoi il est désactivé par défaut et qu'il vaut mieux l'exécuter via un worker de file d'attente ou un cron la nuit.

File Optimizer v1.0.1 · Add-on LaraClassifier / JobClass · par BeDigit

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Besoin d'aide ? Créez un ticket de support

Créer un Ticket