情景:
预期:
HTML中的每个链接都带有指纹,例如“filename.pagespeed.232dsfsf3343.js”
问题:
在我删除PageSpeed缓存后,我发现从第一个请求返回的html缺少指纹(或者,有时只返回没有指纹的部分文件)。
看起来PageSpeed重建了它的缓存,abd该进程是异步的。因此,如果在PageSpeed构建其缓存时有请求 - 请求不会延迟并按原样返回 - 即使它没有指纹。
在构建PageSpeed缓存之前,有没有办法延迟响应?
答案 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,则在第一个请求上应用就地优化。