【问题标题】:Pagespeed rewrite_javascript everything except 1 single js filePagespeed rewrite_javascript 除 1 个单个 js 文件外的所有内容
【发布时间】:2016-04-29 04:50:50
【问题描述】:

我对缩小 JS 文件的 rewrite_javascript 模块有一个小问题。这个功能很棒,因为如果我们清除缓存,pagespeed 还会为每个文件生成一个新 URL,从而使我们能够通过 pagespeed 的 ShardDomain 轻松使用 Cloudfront 缓存

但是,我的一个文件 /js/min/app/common.js" 遇到了一个问题,尽管它下面的文件已被重写,但它根本没有被重写。

我只是不明白为什么会发生这种情况。

有没有人遇到同样的问题并找到了解决方案?

谢谢

更新:

抱歉,这个问题花了这么多时间。我在这里发布了我的 pagespeed 配置的详细信息:

在 HTTP 块中,我有:

pagespeed InPlaceResourceOptimization on;
pagespeed PreserveUrlRelativity on;
pagespeed ForceCaching on;
pagespeed InPlaceRewriteDeadlineMs 100;

pagespeed EnableFilters collapse_whitespace;
pagespeed EnableFilters recompress_images;
pagespeed EnableFilters convert_meta_tags;
pagespeed EnableFilters prioritize_critical_css;
pagespeed EnableFilters extend_cache;
pagespeed EnableFilters rewrite_css,sprite_images;
pagespeed EnableFilters rewrite_javascript;
pagespeed EnableFilters extend_cache;

pagespeed GlobalStatisticsPath /pagespeed_global_statistics;
pagespeed GlobalAdminPath /pagespeed;
pagespeed EnableCachePurge on;

【问题讨论】:

  • 如果没有显示所有 pagespeed 过滤器的 nginx 配置文件副本,很难为您提供帮助。
  • 可以发一下common.js的内容吗?默认情况下,Pagespeed 不会重写“内省”JS 文件,也许您在 common.js 中有将其标记为“不可重写”的内容。
  • @JoshKG 我试图删除几个配置,但仍然无法找到导致问题的原因
  • 可以显示 common.js 吗?
  • @JoshKG 给你:labelleassiette.fr/js/min/app/common.js。虽然它被缩小了。我无法通过 pagespeed 找到有关哪些标志的详细信息。

标签: javascript nginx pagespeed mod-pagespeed google-pagespeed


【解决方案1】:

默认情况下,Pagespeed 不会重写被认为是“内省”的 JavaScript 文件。如果您阅读the Pagespeed docs,它会指出:

...调用 document.getElementsByTagName('script') 的 JavaScript 文件不会被重写

查看您的 common.js 文件,有几行包含函数调用 document.getElementsByTagName('script')。这就是 Pagespeed 不会重写文件的原因。

如果您想禁用此 Pagespeed 检查,请在您的 nginx 配置中添加以下行:

pagespeed AvoidRenamingIntrospectiveJavascript off;

更多信息请关注Pagespeed docs

【讨论】:

  • 我尝试了该指令,但似乎 pagespeed 更严格。所以我要尝试移动任何包含document.getElementsByTagName('script'). out of common.js的部分
  • 答案是我将 require.js 和 jquery 捆绑到我的 common.js 中。问题是即使AvoidRenamingIntrospectiveJavascript 关闭,pagespeed 仍然强制执行此规则。我所做的是将静态脚本移动到一个文件中,其余的移动到另一个文件中。 js 文件包含 jquery 和 require.js 包。为了改进缓存,我将其上传到 s3 并通过云端发送服务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 2014-01-08
  • 1970-01-01
  • 2020-09-06
相关资源
最近更新 更多