2016-11-24 53 views
1

場景:的Nginx +的PageSpeed:第一個請求指紋

  1. 刪除的PageSpeed緩存(如源版本更新)
  2. 發送請求,Nginx的
  3. 獲取響應HTML

預計:

HTML中的每個鏈接都會帶有指紋,例如「filename.pagespeed.232dsfsf3343.js」

問題:

權後,我刪除的PageSpeed緩存,我看到HTML代碼第一請求返回缺少指紋(或有時,只有部分文件恢復沒有指紋)。

它看起來像PageSpeed重建其緩存,該進程是異步的。因此,如果在PageSpeed構建其緩存時發生請求 - 即使沒有指紋,請求也不會延遲並返回原樣。

有什麼辦法延遲響應,直到PageSpeed緩存構建完成?

回答

0

是的,有一些方法可以延遲響應。但是這個解決方案有一些風險。 起初,你需要啓用InPlaceResourceOptimization:

Apache: 
ModPagespeedInPlaceResourceOptimization on 
Nginx: 
pagespeed InPlaceResourceOptimization on; 

然後你需要指定最大延遲

Apache: 
ModPagespeedInPlaceRewriteDeadlineMs deadline_value_in_milliseconds 
Nginx: 
pagespeed InPlaceRewriteDeadlineMs deadline_value_in_milliseconds; 

當InPlaceResourceOptimization啓用,的PageSpeed優化資源時使用10ms的默認期限。如果優化不能在10ms內完成,則將原始資源提供給客戶端,而優化在後臺繼續。緩存後,優化資源將用於進一步請求。請注意,小於零的值將導致PageSpeed無限期地等待。

正如你副作用這一做法,客戶仍然可以下載非優化的內容,如果它的優化不能在截止日期

而且我發現的PageSpeed的解決問題,這樣的紀錄之前完成的,請參閱:

Issue 871如果InPlaceRewriteDeadlineMs爲-1且啓用LoadFromFile,則對第一個請求應用就地優化。

+0

嗨,這是我嘗試的第一件事之一 - 似乎沒有按預期工作... – Illidan