2016-11-24 52 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