首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将mod_deflate首选压缩方法设置为deflate

如何将mod_deflate首选压缩方法设置为deflate
EN

Stack Overflow用户
提问于 2010-09-10 02:50:35
回答 1查看 631关注 0票数 0

当请求头Accept-Encodinggip, deflate时,mod_deflate始终发送gzip数据。

如何告诉mod_deflate优先发送deflate (而不是zlib)而不是gzip

如果不是possible...why,当模块不能收缩时,开发人员会将模块命名为mod_deflate吗?另外,什么是最好的方式,如果有的话,我提交一个bug报告,以便在未来的版本中修复这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-28 05:07:48

看过source code for mod_deflate之后,我得出的结论是,除了gzip之外,不可能发送任何其他内容。

现在,我不是一个c程序员,我不认为我能够提交任何补丁myself...but从源代码我可以看到有一些事情需要修复(警告,我从来没有写过任何c...so这可能是非常错误的)

代码语言:javascript
复制
/* add this method */
static const char *deflate_set_preferred_method(cmd_parms *cmd, void *dummy,
                                const char *arg1)
{
    deflate_filter_config *c = ap_get_module_config(cmd->server->module_config,
                                                &deflate_module);

    if (arg2 != NULL && (!strcasecmp(arg1, "deflate") || !strcasecmp(arg1, "gzip") || !strcasecmp(arg1, "zlib") ) ) {
        c->preferred_method = apr_pstrdup(cmd->pool, arg1);
    }
    else {
        return apr_psprintf(cmd->pool, "Unknown preferred method type %s", arg1);
    }

    return NULL;
}

/* update some code to define "preferred_method" */


/* 
   Update all code that references the string "gzip" to take 
   into account "deflate", and "zlib" as well.

   This is the part I really have no clue how to do.
   lines: 539, 604, 607, 616, and 624 should be updates

   line 624 could read something like this: */

if( !strcasecmp(preferred_method,"gzip") ){
    /* add immortal gzip header */
    e = apr_bucket_immortal_create(gzip_header, sizeof gzip_header,
                                   f->c->bucket_alloc);
    APR_BRIGADE_INSERT_TAIL(ctx->bb, e);
}
else if( !strcasecmp(preferred_method, "zlib") ){
   /* do something to add the zlib headers here */
}

/* update this method */
static const command_rec deflate_filter_cmds[] = {
    AP_INIT_TAKE12("DeflateFilterNote", deflate_set_note, NULL, RSRC_CONF,
                  "Set a note to report on compression ratio"),
    AP_INIT_TAKE1("DeflateWindowSize", deflate_set_window_size, NULL,
                  RSRC_CONF, "Set the Deflate window size (1-15)"),
    AP_INIT_TAKE1("DeflateBufferSize", deflate_set_buffer_size, NULL, RSRC_CONF,
                  "Set the Deflate Buffer Size"),
    AP_INIT_TAKE1("DeflateMemLevel", deflate_set_memlevel, NULL, RSRC_CONF,
                  "Set the Deflate Memory Level (1-9)"),
    AP_INIT_TAKE1("DeflateCompressionLevel", deflate_set_compressionlevel, NULL, RSRC_CONF,
                  "Set the Deflate Compression Level (1-9)"),
    AP_INIT_TAKE1("DeflatePreferredMethod", deflate_set_preferred_method, NULL, RSRC_CONF,
                  "Set the Preferred Compression Method: deflate, gzip, or zlib (not-recommended)"),
    {NULL}
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3679632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档