Dans Drupal 7, où pourrais-je activer / désactiver la compression gzip? Existe-t-il un module pour cette fonctionnalité?
Dans Drupal 7, où pourrais-je activer / désactiver la compression gzip? Existe-t-il un module pour cette fonctionnalité?
Réponses:
Personnellement, je n'aime pas la façon dont Drupal gère la compression de sortie; Je m'occupe de ça en dehors de Drupal.
Sur le site Drupal, j'ajoute
$conf['page_compression'] = FALSE;
$conf['css_gzip_compression'] = FALSE;
$conf['js_gzip_compression'] = FALSE;
dans settings.php, et ceci dans un module personnalisé pour montrer que ceci est désactivé:
/**
* Implements hook_form_FORM_ID_alter().
*/
function MYMODULE_form_system_performance_settings_alter(&$form, $form_state) {
$form['bandwidth_optimization']['page_compression']['#default_value'] = 0;
$form['bandwidth_optimization']['page_compression']['#disabled'] = TRUE;
$form['bandwidth_optimization']['page_compression']['#description'] = t('Handled by Apache.');
}
Cela permet également d'éviter une double compression de sortie accidentelle, qui peut être très difficile à diagnostiquer si vous ne connaissez pas les symptômes.
Ensuite, dans ma configuration Apache, je fais
<IfModule mod_deflate.c>
# Force deflate for mangled headers developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>
# HTML, TXT, CSS, JavaScript, JSON, XML, HTC:
<IfModule filter_module>
FilterDeclare COMPRESS
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/plain
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/x-component
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/javascript
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/json
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/xhtml+xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/rss+xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/atom+xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/vnd.ms-fontobject
FilterProvider COMPRESS DEFLATE resp=Content-Type $image/svg+xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $image/x-icon
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/x-font-ttf
FilterProvider COMPRESS DEFLATE resp=Content-Type $font/opentype
FilterChain COMPRESS
FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no
</IfModule>
<IfModule !mod_filter.c>
# Legacy versions of Apache
AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml
AddOutputFilterByType DEFLATE image/x-icon image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype
</IfModule>
</IfModule>
Cela permet à Apache d'effectuer la compression de sortie par type MIME et de s'assurer que toutes les sorties basées sur du texte sont compressées. Ceci est adapté d'une ancienne version du fichier .htaccess du projet HTML5 Boilerplate, qui vit maintenant dans un projet distinct . J'ajoute également leurs directives pour le contrôle du cache, et quelques autres choses. Je garde tout cela dans un fichier individuel, que je puis Include
dans mes hôtes virtuels.
L'inconvénient est que le serveur compresse chaque requête, mais cela fonctionne bien pour mes sites et mes clients.
Cache pages for anonymous users
puis enregistrez vos options sur votreadmin/config/development/performance
page. Cela présentera ensuite uneCompress cached pages.
option plus bas dans laBANDWIDTH OPTIMIZATION
section (elle est masquée / affichée via javascript, donc cela pourrait fonctionner au premier clic, mais pas ici pour une raison quelconque).