aboutsummaryrefslogtreecommitdiff
path: root/weed/operation/compress.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/operation/compress.go')
-rw-r--r--weed/operation/compress.go39
1 files changed, 26 insertions, 13 deletions
diff --git a/weed/operation/compress.go b/weed/operation/compress.go
index fedc877dd..7190eeeb2 100644
--- a/weed/operation/compress.go
+++ b/weed/operation/compress.go
@@ -16,50 +16,63 @@ import (
*/
func IsGzippable(ext, mtype string, data []byte) bool {
+ shouldBeZipped, iAmSure := IsGzippableFileType(ext, mtype)
+ if iAmSure {
+ return shouldBeZipped
+ }
+
+ isMostlyText := util.IsText(data)
+
+ return isMostlyText
+}
+
+/*
+* Default more not to gzip since gzip can be done on client side.
+ */
+func IsGzippableFileType(ext, mtype string) (shouldBeZipped, iAmSure bool) {
+
// text
if strings.HasPrefix(mtype, "text/") {
- return true
+ return true, true
}
// images
switch ext {
case ".svg", ".bmp":
- return true
+ return true, true
}
if strings.HasPrefix(mtype, "image/") {
- return false
+ return false, true
}
// by file name extension
switch ext {
case ".zip", ".rar", ".gz", ".bz2", ".xz":
- return false
+ return false, true
case ".pdf", ".txt", ".html", ".htm", ".css", ".js", ".json":
- return true
+ return true, true
case ".php", ".java", ".go", ".rb", ".c", ".cpp", ".h", ".hpp":
- return true
+ return true, true
case ".png", ".jpg", ".jpeg":
- return false
+ return false, true
}
// by mime type
if strings.HasPrefix(mtype, "application/") {
if strings.HasSuffix(mtype, "xml") {
- return true
+ return true, true
}
if strings.HasSuffix(mtype, "script") {
- return true
+ return true, true
}
}
- isMostlyText := util.IsText(data)
-
- return isMostlyText
+ return false, false
}
func GzipData(input []byte) ([]byte, error) {
buf := new(bytes.Buffer)
- w, _ := gzip.NewWriterLevel(buf, flate.BestCompression)
+ w, _ := gzip.NewWriterLevel(buf, flate.BestSpeed)
if _, err := w.Write(input); err != nil {
glog.V(2).Infoln("error compressing data:", err)
return nil, err