Bagaimana dan di mana saya dapat mengaktifkan / menonaktifkan kompresi gzip? [Tutup]

8

Di Drupal 7, di mana saya bisa mengaktifkan / menonaktifkan kompresi gzip? Apakah ada modul untuk fungsi ini?

Patoshi パ ト シ
sumber
1
Jika Anda ingin mengaktifkan kompresi ketika Anda menyimpan / menayangkan halaman yang di-cache, Anda pertama kali mengklik Cache pages for anonymous usersdan kemudian menyimpan opsi Anda di admin/config/development/performancehalaman Anda . Ini kemudian akan menyajikan Compress cached pages.opsi lebih lanjut di BANDWIDTH OPTIMIZATIONbagian (ini disembunyikan / ditampilkan melalui javascript sehingga ini semua bisa berfungsi pada klik pertama tetapi tidak di sini karena beberapa alasan).
Jimajamma
sudah diperiksa sebagai dikompresi dan saya sedang menguji situs saya (xcubicle.com) dengan: whatsmyip.org/http-compression-test --- mengatakan tidak dikompresi. tidak yakin kenapa.
Patoshi パ ト シ
Tetapi jika saya menjelajah ke, katakanlah xcubicle.com/buy/20467/google-lg-nexus-5-1632gb-unlocked-phones itu, jadi ini menunjukkan bahwa beranda Anda tidak di-cache dan karenanya tidak dikompresi oleh drupal
Jimajamma
saya melihat saya pikir pelakunya bisa berupa di halaman depan yang menyebabkannya tidak melakukan cache dan mendapatkan gzip. solusi apa pun untuk itu.
Patoshi パ ト シ
5
Pertanyaan ini sebenarnya sangat jelas. Ini seharusnya tidak ditutup.
Elijah Lynn

Jawaban:

11

Secara pribadi, saya tidak suka cara Drupal menangani kompresi keluaran; Saya mengurus ini di luar Drupal.

Di situs Drupal, saya menambahkan

$conf['page_compression'] = FALSE;
$conf['css_gzip_compression'] = FALSE;
$conf['js_gzip_compression'] = FALSE;

ke settings.php, dan ini ke modul khusus untuk menunjukkan bahwa ini dinonaktifkan:

/**
 * 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.');
}

Ini juga untuk mencegah kompresi double output yang tidak disengaja, yang bisa sangat sulit untuk didiagnosis jika Anda tidak tahu tentang gejalanya.

Kemudian, dalam konfigurasi Apache saya, saya lakukan

<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>

Ini memungkinkan Apache melakukan kompresi output berdasarkan tipe MIME, dan juga memastikan semua output berbasis teks dikompresi. Ini diadaptasi dari versi yang lebih lama dari file .htaccess proyek HTML5 Boilerplate proyek, yang sekarang tinggal di proyek terpisah . Saya juga menambahkan arahan mereka untuk kontrol cache, dan beberapa hal lainnya. Saya menyimpan semua ini di file individual, yang saya kemudian Includedi host virtual saya.

Kelemahan dari ini adalah bahwa server memampatkan setiap permintaan, tetapi berfungsi dengan baik untuk situs saya dan klien saya.

mpdonadio
sumber