2013-10-04 73 views
1

我正在嘗試爲我的nginx框找到最佳方法。當然,我的目標是爲用戶提供最佳性能和最佳加載時間。ngx_pagespeed - Gzip靜態資產

因此,我負載測試了我的nginx,並且在nginx論壇的maxim-dounin的幫助下發現我的吞吐量問題是在靜態資產的飛行中。

我必須在構建過程中對所有內容進行預先gzip,這非常容易 - 並且只能在comp level @ 1或2的情況下爲動態內容執行gzip操作,這樣可以節省一些cpu並允許我服務儘可能多的用戶使用aws m1.small ec2實例。

但我也打算使用ngx_pagespeed來優化這些靜態資產,縮小,合併,ngx_pagespeed做得很好。我的意思是,我可以解決圖像,並在構建過程中使用jpgoptim和pngoptim,但將css/js組合起來更困難。

我使用這些ngx_pagespeed配置:

pagespeed on; 
pagespeed EnableFilters combine_css,combine_javascript,canonicalize_javascript_libraries,collapse_whitespace,convert_meta_tags,dedup_inlined_images,flatten_css_imports,inline_import_to_link,inline_css,inline_javascript,rewrite_javascript,remove_comments,rewrite_css,rewrite_images,convert_gif_to_png,recompress_png,convert_jpeg_to_progressive,strip_image_color_profile,strip_image_meta_data,insert_image_dimensions; 
pagespeed JpegRecompressionQuality 80; 
pagespeed FileCacheSizeKb   256000; #256mb 
pagespeed FileCacheCleanIntervalMs 3600000; 
pagespeed FileCacheInodeLimit  500000; 
pagespeed FileCachePath /run/shm/nginx/pagespeed_cache; 
pagespeed Statistics on; 
pagespeed StatisticsLogging on; 
pagespeed LogDir /var/log/pagespeed; 
pagespeed LowercaseHtmlNames on; 

如何ngx_pagespeed作品nginx的gzip_static任何ideias?我的意思是,就我的理解而言,ngx_pagespeed正在運行在nginx的「前面」,因爲它會緩存tmpfs優化的所有內容。如果服務器受到來自tmpfs服務器的已優化資產的衝擊,並且我在緩存文件夾中查找了gzip文件,並且找不到任何文件。 首先,ngx_pagespeed做自己的gzip?它在飛行中它或緩存gzipped版本?

當它從nginx(gzip_static on)收到一個已經壓縮的資源時會怎麼樣?它是否需要解壓,然後再優化後再gzip?

我該如何充分利用這兩個世界 - 服務預壓縮靜態資產和ngx_pagespeed優化?

非常感謝,並致以最誠摯的問候。

+0

你爲什麼使用gzip_static?如果是因爲gzip的CPU成本太高,那麼ngx_pagespeed對於您的設置肯定會太貴。 ngx_pagespeed增加了比gzip更多的CPU使用。 – sligocki

+0

感謝您的幫助。 CPU是一個限制,是的,但也是EC2機器的網絡吞吐量是30.000 KB /秒,所以我需要平衡的東西。我正在使用gzip_static以獲得最佳壓縮級別而不浪費cpu。我知道pagespeed增加了很多cpu的使用,但我真的希望將我的資源進行優化,組合,縮小,並且我無法控制源代碼。 我的問題是 - ngx_pagespeed正在將我的靜態優化資產緩存到tmpfs。每次用戶點擊優化的資產時,ngx_pagespeed都會將其壓縮?或者它在緩存上保留一個壓縮資源? – ddutra

+0

從我的測試中,它應該更快。例如,當用戶點擊[/css/A.print.css.pagespeed.cf.54Itr6v-Y8.css]等資源時,它將直接從tmpfs緩存和服務器中獲取。但與nginx提供靜態內容相比,吞吐量並不是那麼好。所以我的問題已經改變了一些,因爲我已經做了一些測試並閱讀了這個。 ngx_pagespeed在[/css/A.print.css.pagespeed.cf.54Itr6v-Y8.css]命中並且資產在緩存中時會執行什麼操作?它是否直接提供服務?它是否提供gzip和服務?它保留gzipped版本嗎?我能控制這個嗎? – ddutra

回答

1

我能夠通過將清漆置於Nginx之前完成我的目標。清漆緩存資產和頁面的gziped版本。 ngx_pagespeed下游緩存清除(檢查nxg_pagespeed文檔以獲取更多信息)正如其預期的那樣工作,因爲當優化(在猜測的背景上運行)完成時,將PURGE請求發送給清漆。現在的表現非常棒。