Domanda

Non sono riuscito a trovare molte informazioni su questo.

Voglio compilare tutti i file CSS (e JS) in qualcosa del genere:

css/all-c498dsfbc.css
.

Proprio ora sono in grado di ottenere questi:

css/all.css
css/c498dsfbc.css
css/all.css?v=123
.

Il primo fa schifo, perché non ha la cache che si aggancia affatto.

Il secondo genera un hash che potrebbe essere utilizzato per il busting della cache, ma per qualche motivo non cambia quando cambia qualcosa nei miei file .css e quindi esegui di nuovo questo:

$ php app/console assetic:dump --env=prod --no-debug
.

Il terzo succhia anche perché devo cambiare manualmente la versione, come spiegato qui: http://symfony.com/doc/current/reference/configuration/framework.html#ref-framework-assets-Version . Inoltre, non penso che usare query per questa è una buona idea (penso che alcuni browser o CDN potrebbero non piacermi). Sarebbe molto meglio se il nome del file è stato cambiato: 'ALL-C498DSFBC.CSS'. È così che è fatto in rotaie se ricordo correttamente.

Qualche idea?

Modifica

Sembra che questa funzione sia mancante, non posso crederci: https:// GitHub. Com / Kriswallsmith / Assetic / Pull / 190

È stato utile?

Soluzione

Nel nostro progetto per garantire che il nuovo contenuto non venga memorizzato nella cache per la vernice per ogni distribuzione, cambiamo manualmente la versione - e le attività scelgono quella.Penso, è una pratica comune.Ma nel nostro caso - lo salva in cartella come web/version-1.2.3/css/all.css.

La nostra configurazione per la sezione framework:

    templating:
        engines: ['twig']
        assets_version: %release_version%
        assets_version_format: "version-%%2$s/%%1$s"
.

Altri suggerimenti

So che questo è un vecchio filo ma è in cima a Google, quindi ho pensato che vale la pena l'aggiornamento:

È ora possibile farlo con Assetic utilizzando il Cache Buster Worker .Tuttavia, il pacchetto Assetic 2.3.0 non ha la configurazione per questo, quindi è necessario abilitarlo manualmente per ora.Questo può essere fatto la seguente definizione di servizio:

#config.yml or a service.yml
#...
services:
    assetic.worker.cache_buster:
        class: Assetic\Factory\Worker\CacheBustingWorker
        public: false
        arguments:
            lazy_manager: @assetic.asset_manager
        tags:
            worker_factory: { name: assetic.factory_worker }
.

Questo lavoro intorno è dalla richiesta di tiro per la configurazione del lavoratore della cache buster: https://github.com/symfony/esseticbunddle/pull/119/files

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top