我正在处理的网站有多个社交按钮 - Facebook、Twitter、Google+、Pinterest 等。
其中大多数都有自己的外部 .js 文件以包含在您的页面上。对于一个关注 http 请求的网站,将所有社交 .js 文件合并为一个有什么缺点?
我最关心的是供应商何时更新脚本。这种情况的通常协议是什么?保留额外的请求,还是冒着使用过时代码的风险?
我正在处理的网站有多个社交按钮 - Facebook、Twitter、Google+、Pinterest 等。
其中大多数都有自己的外部 .js 文件以包含在您的页面上。对于一个关注 http 请求的网站,将所有社交 .js 文件合并为一个有什么缺点?
我最关心的是供应商何时更新脚本。这种情况的通常协议是什么?保留额外的请求,还是冒着使用过时代码的风险?
浏览器缓存应该已经为您解决了这个问题。使用供应商脚本的一个巨大好处是每个网站都链接到该供应商脚本的同一个副本,因此它们很可能已经缓存在浏览器中(由于浏览器访问之前的页面),因此没有 http 请求当它们已经在浏览器缓存中时需要加载它们。如果您使用自己的副本,则必须为您的站点重新下载该副本,并且您将无法利用该代码已缓存在浏览器中的事实。
除了缓存之外,大多数像这样的供应商都使用 CDN 来托管脚本,这是一个分布式和优化的位置,可以更快地下载,应该能够比您的托管站点更快地下载脚本。
除了缓存问题之外,这些脚本需要保留在供应商的站点上,并由供应商在供应商认为合适的时候进行维护。如果他们想改变他们,那是他们的特权。您不能将它们组合成您自己的组合脚本,也不应该。他们可以随时更改其网站的工作方式,如果您使用复制的过时脚本,您的功能很容易中断。
根据您使用它们的方式,您可能能够更改第三方脚本,以便动态加载它们并在加载常规页面脚本后加载。这可能会延迟他们 UI 的呈现,但可能会让您的页面加载得更快一些。
合并的缺点:
第一个问题的解决方案是在您的服务器上运行一个定期合并最新版本的社交库的 cron 作业。此组合版本将提供给您的用户。