Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
二次元的罪恶王冠
beego
提交
8f421936
B
beego
项目概览
二次元的罪恶王冠
/
beego
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
beego
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8f421936
编写于
11月 10, 2015
作者:
J
JessonChan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
better compress func design
上级
891be34f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
25 addition
and
15 deletion
+25
-15
acceptencoder/acceptencoder.go
acceptencoder/acceptencoder.go
+25
-15
未找到文件。
acceptencoder/acceptencoder.go
浏览文件 @
8f421936
...
...
@@ -44,16 +44,11 @@ func WriteBody(encoding string, writer io.Writer, content []byte) (bool, string,
func
writeLevel
(
encoding
string
,
writer
io
.
Writer
,
reader
io
.
Reader
,
level
int
)
(
bool
,
string
,
error
)
{
var
outputWriter
io
.
Writer
var
err
error
switch
encoding
{
case
"gzip"
:
outputWriter
,
err
=
gzip
.
NewWriterLevel
(
writer
,
level
)
case
"deflate"
:
outputWriter
,
err
=
flate
.
NewWriter
(
writer
,
level
)
default
:
// all the other compress methods will ignore
// such as the deprecated compress and chrome-only sdch
if
cf
,
ok
:=
encodingCompressMap
[
encoding
];
ok
{
outputWriter
,
err
=
cf
(
writer
,
level
)
}
else
{
encoding
=
""
outputWriter
=
writer
.
(
io
.
Writer
)
outputWriter
,
err
=
noneCompress
(
writer
,
level
)
}
if
err
!=
nil
{
return
false
,
""
,
err
...
...
@@ -83,13 +78,24 @@ type q struct {
name
string
value
float64
}
type
compressFunc
func
(
io
.
Writer
,
int
)
(
io
.
Writer
,
error
)
func
noneCompress
(
wr
io
.
Writer
,
level
int
)
(
io
.
Writer
,
error
)
{
return
wr
,
nil
}
func
gzipCompress
(
wr
io
.
Writer
,
level
int
)
(
io
.
Writer
,
error
)
{
return
gzip
.
NewWriterLevel
(
wr
,
level
)
}
func
deflateCompress
(
wr
io
.
Writer
,
level
int
)
(
io
.
Writer
,
error
)
{
return
flate
.
NewWriter
(
wr
,
level
)
}
var
(
encoding
Map
=
map
[
string
]
string
{
// all the other compress methods will ignore
"gzip"
:
"gzip"
,
"deflate"
:
"deflate"
,
"*"
:
"gzip"
,
// * means any compress will accept,we prefer gzip
"identity"
:
""
,
// identity means none-compress
encoding
CompressMap
=
map
[
string
]
compressFunc
{
// all the other compress methods will ignore
"gzip"
:
gzipCompress
,
"deflate"
:
deflateCompress
,
"*"
:
gzipCompress
,
// * means any compress will accept,we prefer gzip
"identity"
:
noneCompress
,
// identity means none-compress
}
)
...
...
@@ -119,5 +125,9 @@ func parseEncoding(r *http.Request) string {
}
}
}
return
encodingMap
[
lastQ
.
name
]
if
_
,
ok
:=
encodingCompressMap
[
lastQ
.
name
];
ok
{
return
lastQ
.
name
}
else
{
return
""
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录