2009-06-29 94 views
0

是否可以發送EAR文件中包含的預壓縮文件?更具體地說,WAR文件中的jsp和js文件。我使用的是Apache HTTP作爲Web服務器,雖然打開deflate模塊並將其設置爲使用預壓縮版本的文件很簡單,但我想將其應用於包含在EAR文件中的文件部署到JBoss。原因在於內容非常靜態,並且每次在運行時壓縮它的CPU時間都非常昂貴。HTTP壓縮 - 如何發送EAR文件中存在的預壓縮文件?

非常坦率地說,我並不完全熟悉JBoss如何部署這些EAR文件並「服務」它們。我想要做的事情的要點是預壓縮戰爭中包含的文件,以便在請求時將它們發送回客戶端,並使用gzip進行Content-Encoding。

回答

0

我不經常經常訪問這個網站,而且我似乎已經離開了這個線程。對於那個很抱歉。我確實成功壓縮了我的javascript和css文件。我做的是我使用gzip在ant構建過程中預壓縮它們。然後我不得不欺騙這個名字來擺脫gzip擴展。所以我把foo.js壓縮成了foo.js.gzip。我將這個foo.js.gzip重命名爲foo.js,這是打包到WAR文件中的文件。這樣可以處理預壓縮部分。爲了正確地提供這個文件,我們只需通過http響應的內容編碼頭來告訴瀏覽器該文件是壓縮的。這是通過一個輸出過濾器來完成的,該過濾器應用於匹配* .js擴展名的文件(如果有幫助的話,可以使用一些Java/JBoss,WEB-INF/web.xml文件)。

0

從理論上講,你可以在將它們壓縮到EAR之前壓縮它們,然後用一個自定義控制器爲它們提供服務,該控制器將http頭添加到響應中,告訴客戶端它們被壓縮,但似乎很多努力去。

當你說即時壓縮是非常昂貴的,你真的測量過它嗎?您是否嘗試請求大量未壓縮的頁面,測量了cpu使用情況,然後再將其與壓縮頁面綁定在一起?我想你可能會高估估計的影響。它使用相當低強度的流壓縮,旨在使用很少的CPU資源。

您需要非常確定在達到這樣的長度以減輕它的影響之前,您有真正的性能問題。

+1

我只聽說過我們收到高流量,似乎沒有必要每次壓縮相同的文件。我認爲會有一種服務預壓縮內容的簡單方法,但如果按照您的說法,我將測量壓縮的影響以及調查修改響應標題的困難。 我對使用「昂貴」一詞表示歉意,「低效/浪費」會更好地描述我的性格。 – ipwnponies 2009-07-02 16:21:23