动态社交媒体按钮-减少http请求和验证错误
Dynamic social media buttons - reducing http requests and validation errors
我在几个网站上使用以下代码来添加动态社交媒体按钮。
在它们之间,它们向每个页面添加三个javascript http请求和无效代码。虽然我很感激这些都是从CDN加载的,但它们增加了其中一个网站页面上已经很重的负载,无效性也让我很恼火。
是否有任何方法可以减少请求数量,或强制最后加载该段代码和/或在不破坏脚本的情况下解决有效性问题。
<div id="fb-root"></div>
<script type="text/javascript">(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div>
<ul>
<li>
<div class="fb-like" data-href="http://www.facebook.com/username" data-send="true" data-layout="button_count" data-width="100" data-show-faces="false"></div>
</li>
<li>
<a style="color: #777;" href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="twittername">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
</li>
<li>
<a href="https://twitter.com/justicecampaign" class="twitter-follow-button" data-show-count="true">Follow @twittername</a>
</li>
<li>
<script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
<g:plusone size="medium"></g:plusone>
</li>
</ul>
</div>
您可以做的最好的事情是将这些脚本移动到<body>
的末尾,或者将defer
属性添加到Twitter和Google+的script
标记中。浏览器在下载和执行JavaScript时会停止页面的解析和呈现,因此不建议在HTML中间使用第三方脚本,因为您的页面将受到这些第三方网络的支配。如果其中任何一个出现延迟,您的页面都会感觉到。将这些脚本移到底部可以确保首先解析和呈现最重要的内容。
至于减少请求,您可以尝试下载这些第三方脚本并将其合并为一个脚本,从而消除两个请求。不利的一面是,除非您主动监控并重新组合脚本,否则在更新脚本时不会获得最新版本的脚本。
我真的不能谈论无效性,因为我没有为这些特定的剧本研究过太多。
相关文章:
- Meteor如何接收HTTP请求
- 在我的情况下,如何进行http请求
- 使用插件收听Firefox标签的http请求
- Angularjs http.get() Cross-Origin 请求被阻止
- http请求使用html而不是json进行响应
- 在node-js路由中发出http请求
- 通过sdk/system/events在修改请求观测器上测试http
- 是否可以在没有HTTP请求或<输入>
- Acync JS HTTP请求通知请求
- PhantomJs在控制台中发出http请求时不会返回任何状态
- 当我在chrome中切换设备模式时,$http.get请求失败
- PHP处理来自一个页面的http请求,并将其显示在另一个页面上
- 使用angular js通过代理服务器请求Http
- 如何从HTTPS服务器请求HTTP服务器的javascript文件
- 阻止的跨来源请求:http://api.fixer.io/latest.
- 坏的请求.HTTP POST到api
- 有没有办法为AngularJS JSON请求($http/$resource)使用浏览器缓存?
- angular js在每个http请求$http上添加请求参数
- 当从不存在的站点请求HTTP响应时,Node.js脚本会中断
- 通过代理服务器请求HTTP呼叫