2010-05-26 40 views
9

有什麼辦法自動縮小靜態內容,然後自動從緩存中提供它?類似於mod_compress/mod_deflate的工作?最好是我可以與壓縮結合使用的東西(因爲壓縮有更明顯的好處)。服務器端自動縮小?

我的首選項是與lighttpd一起工作,但我一直無法找到任何東西,所以任何可以做到這一點的Web服務器都會很有趣。

回答

4

您可以嘗試的nginx的第三方地帶模塊:

http://wiki.nginx.org/NginxHttpStripModule

你使用任何模塊只是要刪除空白。通過使用能夠理解你正在縮小的任務的縮小器,你會得到更好的結果。例如Google的Closure JavaScript編譯器。

它足夠聰明,知道變量是什麼,並縮短它的名字。一個空白消除器不能做到這一點。

除非您的網站流量非常低,否則我建議您離線進行minifying。但是如果你想在你的生活環境中縮小,我推薦使用nginx的代理緩存。 (對不起,但我沒有足夠的聲望發佈多個鏈接)

或者您可以查看memcached的內存緩存或Redis的同樣的事情,但與磁盤備份。

+3

「對不起,但我沒有足夠的聲望發佈多個鏈接」..如何用純文本編寫它? – 2014-09-05 14:08:14

2

我使用了Microsoft Ajax Minifier,它附帶一個C#庫來縮小js文件。我在服務器上使用它,每個頁面最多提供兩個壓縮的.js文件(一個「靜態」,在整個站點上是相同的,另一個是隻針對該頁面的「動態」文件)。

雅虎的YUI壓縮器也是一個簡單的Java .jar文件,您也可以使用它。

我認爲重要的不是逐個文件地完成。你真的需要結合 .js文件才能獲得最大收益。出於這個原因,「自動」解決方案並不真正起作用 - 因爲它只能在逐個文件的基礎上工作。

+0

最主要的是,我寧願沒有手動運行腳本(是的,我知道懶惰)。我每頁只有一個js和一個css文件。 – 2010-05-26 01:40:18

3

我決定通過PHP來做這件事(主要是因爲我不想寫一個lighttpd模塊)。

我的腳本接受一個查詢字符串,指定請求的文件類型(js或css),然後是這些文件的名稱。舉例來說,在我的網站的CSS添加這樣的:

<link rel="stylesheet" href="concat.php?type=css&style&blue" ... />

這minifies並連接的style.css和blue.css

它採用JSMin-PHPcssmin

它還使用XCache緩存文件,如果它可用(因爲縮小是昂貴的)。我實際上計劃改變腳本,以便在Xcache不可用時不會縮小腳本,但是我擁有Xcache並且感到無聊。

無論如何,如果任何人想要它,它是here。如果你使用我的,你需要改變isAllowed()函數來列出你的文件(它可能是安全的,使它只是返回true,但很容易列出我想允許的)。