Nginx + PageSpeed:首先请求指纹识别

时间:2016-11-24 09:44:50

标签: nginx pagespeed

情景:

  1. 删除PageSpeed缓存(例如,在源版本更新时)
  2. 向Nginx发送请求
  3. 获取回复HTML
  4. 预期:

    HTML中的每个链接都带有指纹,例如“filename.pagespeed.232dsfsf3343.js”

    问题:

    在我删除PageSpeed缓存后,我发现从第一个请求返回的html缺少指纹(或者,有时只返回没有指纹的部分文件)。

    看起来PageSpeed重建了它的缓存,abd该进程是异步的。因此,如果在PageSpeed构建其缓存时有请求 - 请求不会延迟并按原样返回 - 即使它没有指纹。

    在构建PageSpeed缓存之前,有没有办法延迟响应?

1 个答案:

答案 0 :(得分: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,则在第一个请求上应用就地优化。