Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
张磊
/
FileStorageBeego
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
140b513c
authored
2013-04-18 23:13:53 +0800
by
astaxie
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
support gzip #37
1 parent
a3f8fd6a
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
42 additions
and
3 deletions
beego.go
controller.go
beego.go
View file @
140b513
...
...
@@ -37,6 +37,7 @@ var (
SessionSavePath
string
// session savepath if use mysql/redis/file this set to the connectinfo
UseFcgi
bool
MaxMemory
int64
EnableGzip
bool
// enable gzip
GlobalSessions
*
session
.
Manager
//GlobalSessions
)
...
...
@@ -66,6 +67,7 @@ func init() {
SessionSavePath
=
""
UseFcgi
=
false
MaxMemory
=
1
<<
26
//64MB
EnableGzip
=
false
}
else
{
HttpAddr
=
AppConfig
.
String
(
"httpaddr"
)
if
v
,
err
:=
AppConfig
.
Int
(
"httpport"
);
err
!=
nil
{
...
...
@@ -135,6 +137,11 @@ func init() {
}
else
{
UseFcgi
=
ar
}
if
ar
,
err
:=
AppConfig
.
Bool
(
"enablegzip"
);
err
!=
nil
{
EnableGzip
=
false
}
else
{
EnableGzip
=
ar
}
}
StaticDir
[
"/static"
]
=
"static"
...
...
controller.go
View file @
140b513
...
...
@@ -2,6 +2,8 @@ package beego
import
(
"bytes"
"compress/gzip"
"compress/zlib"
"encoding/json"
"encoding/xml"
"github.com/astaxie/beego/session"
...
...
@@ -91,9 +93,39 @@ func (c *Controller) Render() error {
if
err
!=
nil
{
return
err
}
else
{
c
.
Ctx
.
SetHeader
(
"Content-Length"
,
strconv
.
Itoa
(
len
(
rb
)),
true
)
c
.
Ctx
.
ContentType
(
"text/html"
)
c
.
Ctx
.
ResponseWriter
.
Write
(
rb
)
c
.
Ctx
.
ResponseWriter
.
Header
()
.
Set
(
"Content-Type"
,
"text/html; charset=utf-8"
)
output_writer
:=
c
.
Ctx
.
ResponseWriter
.
(
io
.
Writer
)
if
EnableGzip
==
true
&&
c
.
Ctx
.
Request
.
Header
.
Get
(
"Accept-Encoding"
)
!=
""
{
splitted
:=
strings
.
SplitN
(
c
.
Ctx
.
Request
.
Header
.
Get
(
"Accept-Encoding"
),
","
,
-
1
)
encodings
:=
make
([]
string
,
len
(
splitted
))
for
i
,
val
:=
range
splitted
{
encodings
[
i
]
=
strings
.
TrimSpace
(
val
)
}
for
_
,
val
:=
range
encodings
{
if
val
==
"gzip"
{
c
.
Ctx
.
ResponseWriter
.
Header
()
.
Set
(
"Content-Encoding"
,
"gzip"
)
output_writer
,
_
=
gzip
.
NewWriterLevel
(
c
.
Ctx
.
ResponseWriter
,
gzip
.
BestSpeed
)
break
}
else
if
val
==
"deflate"
{
c
.
Ctx
.
ResponseWriter
.
Header
()
.
Set
(
"Content-Encoding"
,
"deflate"
)
output_writer
,
_
=
zlib
.
NewWriterLevel
(
c
.
Ctx
.
ResponseWriter
,
zlib
.
BestSpeed
)
break
}
}
}
else
{
c
.
Ctx
.
SetHeader
(
"Content-Length"
,
strconv
.
Itoa
(
len
(
rb
)),
true
)
}
output_writer
.
Write
(
rb
)
switch
output_writer
.
(
type
)
{
case
*
gzip
.
Writer
:
output_writer
.
(
*
gzip
.
Writer
)
.
Close
()
case
*
zlib
.
Writer
:
output_writer
.
(
*
zlib
.
Writer
)
.
Close
()
case
io
.
WriteCloser
:
output_writer
.
(
io
.
WriteCloser
)
.
Close
()
}
return
nil
}
return
nil
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment