我将如何以及在何处启用/禁用gzip压缩?[关闭]


8

在Drupal 7中,我可以在哪里启用/禁用gzip压缩?是否有用于此功能的模块?


1
如果要在保存/提供缓存页面时启用压缩,请首先单击Cache pages for anonymous users,然后将选项保存在admin/config/development/performance页面上。然后,这将Compress cached pages.在该BANDWIDTH OPTIMIZATION部分的下方显示一个选项(它通过javascript隐藏/显示,因此在第一次单击时就可以全部使用,但由于某种原因在这里不起作用)。
Jimajamma

它已被检查为压缩状态,并通过以下方式测试了我的网站(xcubicle.com):whatsmyip.org/http-compression-test ---表示未压缩。不知道为什么。
Patoshiパトシ

但是,如果我浏览到xcubicle.com/buy/20467/google-lg-nexus-5-1632gb-unlocked-phones,它是,所以这表明您的主页没有被缓存,因此没有被缓存被drupal压缩
Jimajamma 2014年

我看到我认为罪魁祸首可能是首页上的表格,这导致它无法缓存并被压缩。任何解决方案。
Patoshiパトシ

5
这个问题实际上很清楚。这不应该被关闭。
伊利亚·林恩

Answers:


11

我个人不喜欢Drupal处理输出压缩的方式。我在Drupal之外负责此工作。

在Drupal网站上,我添加了

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

到settings.php,然后到一个自定义模块以显示它已被禁用:

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

这还可以防止意外的双输出压缩,如果您不了解症状,可能很难诊断。

然后,在我的Apache配置中

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

这样,Apache可以按MIME类型进行输出压缩,并确保所有基于文本的输出都经过压缩。该文件改编自HTML5 Boilerplate项目的.htaccess文件的旧版本,该文件现在位于单独的项目中。我还添加了用于缓存控制的指令以及其他一些内容。我将所有这些保存在一个单独的文件中,然后将其保存Include在我的虚拟主机中。

这样做的缺点是服务器会压缩每个请求,但对我的站点和我的客户来说效果很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.