• 你確定 jpg gif 不可以再壓縮嗎 for apache mod_gzip ??

    by  • 2009/06/29 • linux • 11 Comments

    我相信很多人都知到 jpg , gif 圖檔再經過壓縮似乎就沒有多大的用處

    沒壓縮還好, 壓了搞不好檔案會變更大, 就失去了壓縮的意義了 ~~

    在看到很多前輩分享的文章中, 都告訴我們 jpg, gif 的不可再壓縮性.

    我可以很大聲的問你說 “你確定嗎 ??" …..

    mod_gzip 運用在 apache 上, 主要的目的就是將檔案壓縮來達到節省頻寬

    的用意. 如同上一篇提到 Apache 啟用壓縮 mod_gzip mod_deflate 節省頻寬,

    那很多的文章都告訴我們, 可以壓縮文字如 html, php, css , js,….etc 之類的

    也都告訴我們 jpg gif 不可再壓縮, 那只是浪費 Server 的 CPU 而已..

    今天我有一條雙向10M 的線路, 在經過 mod_gzip 壓縮 html, php , js , css之下

    每天 upload 超載的情形依就沒有改變, 為什麼呢 ??

    我相信很多人都知道, 為了增加網頁的可讀性, 常常會用的圖文並茂的,

    文要壓縮那是很理所當然的事, 那 “圖" 呢 ??

    你確定每張圖在處理時都有經過"最佳化"的壓縮嗎 ?? 我想很多人都跟我一樣

    “不確定" (謎之聲 : 通常管 server 的人那會懂美編視設呀 !!) .

    所以啦, 今天就在我的不確定下, 我在 mod_gzip 裡加入了以下的指令

    mod_gzip_item_include file \.jpg$
    mod_gzip_item_include file \.gif$
    mod_gzip_item_include file \.swf$

    (我同事看到, 馬上跟我講, 那是浪費 CPU 的事)

    加完之後, apache 重新啟動, 經過我的以下流量圖可以得知

    graph_image.jpg

    在紅色區塊, 是啟動 gzip 針對 php, html, css , js 壓縮後的結果, 那白色區塊就是我加了

    jpg, gif, swf 檔案格式壓縮後的頻寬使用圖, (藍色表示上傳, 綠色是下載), 在壓縮

    jpg , gif, swf 後頻寬起碼節省一半(從最高 8M多壓到最低 3M 多), 甚至有 30kb 的 gif 檔經過

    壓縮, 只剩下 10kb. (我的網站是"圖"很多的網站, 以上的圖只是其中一台 server)

    所以我可以很大聲的說 " 誰說jpg gif 不可以壓縮的 ?? “

    …. 以上跟各位分享

    2009.07.01 更新, 為了證實 jpg 的可壓縮性 ~~ 我剛剛再針對 jpg 圖檔進行測試 ~~

    jpgcom_nEO_IMG.jpg

    跟我下面的回應講的一樣 , 原檔 55.4kb , 壓縮後 42kb ~~ 有 23% 的壓縮率 ~~

    (補上圖, 有圖有真相)

    • 看來gzip蠻好用的說!

    • 有時候一整個差很多 ~~

    • 有壓過真的不同
      差很大

    • Jie

      請問如果用 mod_deflate.so 這個模組,
      那 jpg gif png 等圖檔要如何下語法進行壓縮 ?

    • 上面指令框的部份就是囉 ~~ 參考看看

    • 路人甲

      jpg應該是無法再壓縮,除非你把影像的品質變差…
      如果只是把原本的jpg檔再拿去用gzip壓縮,那只會愈壓愈大…
      gif檔案,則有兩種格式,一種是本身有壓縮過的,另一種沒有

      樓主應該可以再測試看看 🙂

    • @路人甲
      嗯 ~~ 基本上我們的認知都跟你一樣 ~~
      不過呢 ~~ 經過 gzip 壓縮, 是不會影響到圖片品質的, 他是針對把檔案變小 ~~
      那為什麼 jpg 可以再壓呢 ??

      你確定每張圖在處理時都有經過”最佳化”的壓縮嗎 ?? 我想很多人都跟我一樣

      “不確定” (謎之聲 : 通常管 server 的人那會懂美編視設呀 !!) .

      以上這句話, 才是重點 ~~

      補充一點上面那個頻寬圖的網站是一個 jpg 檔佔流量 60% 的網站 !!

    • 路人甲

      樓主,
      如果您單獨設定只多加jpg,並且排除.gif跟.swf呢?結果可以降多少?
      因為您是設定了三者加起來,讓頻寬降了
      此不等同於jpg真的可以再壓縮
      我相信gzip不可能針對每張圖做"最佳化"的壓縮
      像jpg此種壓縮檔,其entropy都會變大,可以想像成是密度變大,所以很難再以無失真(gzip)的方式再次壓縮
      再用gzip壓縮,因為會再加檔頭上去,故反而讓檔案變大

      樓主,我並不是質疑您的結果
      只是因這事與所學不同,所以存疑,如果冒犯請見諒

    • @路人甲
      不會您想太多了 ~~

      您的問題真的很好, 也可以讓我再次去檢視 gzip 它的效果 ~~
      就我剛剛隨機挑了一個 jpg 檔, 在 server 上看是 55.4kb,
      在 firefox 上使用 firebug , 看到的 content size 是 42kb ~~

      我總算找到可以測 jpg 的測試網站了 ~~ 有圖有真相 ~~ 我會更新此文 ~~

    • 路人甲

      樓主,
      謝謝 小弟受教了
      原來我還漏了些東西
      🙂

    • @路人甲
      嗯 ~~ 也謝謝你的質疑, 這樣也讓我更進一步去了解到 mod_gzip 整體的效益 ~~

      jpg 果然是可以再壓縮的 ~~