Perché Drupal 7 sta caricando il file .js sbagliato?
Domanda
C'è un bug molto strano che sta accadendo su uno dei nostri siti Web dei clienti e non siamo stati in grado di capire cosa sta succedendo. È difficile.
Il problema
In termini semplici, Drupal sta caricando il file JavaScript sbagliato. Abbiamo un tema personalizzato per il sito. Nel file .info del tema c'è questa riga:
scripts[] = script/script.js
Un paio di settimane fa abbiamo aggiornato il file .info. Il file .info originale conteneva:
scripts[] = script/script-min.js
I file script e script-min sono file completamente diversi e il server dovrebbe caricare il script.js
file.
Ecco il comportamento a cui stiamo assistendo:
- Quando scarichiamo la cache del tema, Drupal legge nel file .info e carica
script.js
- Dopo che Cron corre (ogni 5 minuti) Drupal deciderà casualmente di caricare
script-min.js
- Se controlliamo il database, il
system
La tabella mostra che Drupal ha memorizzato nella cachescript-min.js
Va notato che nulla nel codice sta caricando script-min.js. Abbiamo tratto e non possiamo scoprire da dove Drupal avrebbe persino cercato di caricare il file. Il file script-min.js esiste nella directory di script lungo il file script.js, ma in nessun luogo si fa riferimento.
La nostra configurazione
- Hosting cloud Acquia con GIT e PHP 5.3+
- 3 ambienti (Dev, Stage, Production)
- L'ambiente di produzione ha due server Web, un bilanciamento, vernice e mysql. I server Web utilizzano il file system Gluster per sincronizzare i file
- Questo problema non sembra apparire sui nostri server Dev/Stage
Quello che abbiamo provato
Nessuna di queste correzioni ha funzionato:
- Registro di ricostruzione
- Rimozione del file script-min.js
- Targeting IPS del server Web per escludere un problema con la configurazione a dual-server
- Cancella tutte le cache
- Cancella cache di vernice
Perché abbiamo bisogno di aiuto
Abbiamo cercato di diagnosticare questo problema da quasi due settimane e abbiamo esaurito le idee ovvie. La nostra teoria principale in questo momento è che il loro potrebbe essere un problema con i due server web, ma da tutti i nostri test, non sembra essere il caso ... ma ha più senso.
Siamo consapevoli che probabilmente potremmo convincere il server a utilizzare il file JS giusto semplicemente usando drupal_add_js
Invece del metodo .info, ma vogliamo davvero sapere perché Il server sta caricando un file a cui non lo stiamo dicendo.
Modifiche
Questi moduli implementano hook_cron () sul sito: Acquia_agent, acquia_spi, ctools, dblog, field, googleanalytics, node, scheduler, system, update, xmlsitemap_node, xmlsitemap, xmlsitemap_engines
Ho già controllato e durante Cron, il drupal_clear_js_cache
, system_rebuild_theme_data
, e drupal_theme_rebuild
le funzioni sono non colpo. I miei presupposti originali avevano a che fare con quelle funzioni, ma se non funzionano durante Cron, probabilmente non sono il problema.
Pensiamo che il problema potrebbe essere correlato a questo rapporto di bug: http://drupal.org/node/1765812
Nessuna soluzione corretta