关于性能优化: 内嵌 or 外联静态文件(css/js)

2015-03-20 13:22:38 +08:00
 gangsta
最近在看一些性能优化方面的东西.结合前段时间挺火的那个帖子 /t/170974 有一些疑问.

外链样式表和脚本文件的优点是显而易见的,通常被大家认为"前端最佳实践"中的某一条,这里就不再复述,可以参考雅虎的Best Practices for Speeding Up Your Web Site中关于"Make JavaScript and CSS External"的部分:
https://developer.yahoo.com/performance/rules.html

但其实很多网站,甚至一些流量巨大的网站,也会采用内嵌样式表和脚本在HTML中的做法
比如京东和新浪,感兴趣的可以右键看下源码 http://www.jd.com http://www.sina.com.cn

直接内嵌在页面中,优点似乎也是很明显的:
1.减少HTTP请求数
2.HTML同样可以整体被缓存,这样下次请求的页面体积就会更小
3.如果做成外联的话,通常的经验是选用一个不同的域名(这个原因有很多,在上次那个帖子里 /t/170974 很多大神也解释过了) 但是静态服务器出现故障时,如果内嵌了样式和脚本文件则依然可以保证页面的渲染不受影响

相信V2EX上还是个人站长比较多,针对这类站点,其实也有一些特点,比如css和js多数情况通常是针对某个特定页面来写的,被复用的概率不大;
vps(V2EX应该DO和Linode比较多)的性能和连接速度通常不是很高,这样,多一次http请求的RTT就不能被忽略(即使是很小的静态文件)
另外,很多时候,外联的CSS和脚本文件通常很小,这个时候,内嵌带来的优点远比外联要明显的多 (比如V2EX的这个静态文件,其实只有10来行, https://www.v2ex.com/css/desktop.css?v=3.8.3 Google PageSpeed Insights针对V2EX首页的建议也是把这个文件内嵌在页面中.
1729 次点击
所在节点    问与答
3 条回复
otakustay
2015-03-20 16:22:09 +08:00
rule永远是rule,不是law,任何rule都只在特定场景有效,而best practice无非就是有效场景多一些的rule而已……
外联还是内联,与页面本身缓存时间、资源大小、资源被依赖程度都有关系,我没有统一的模型去衡量这个,更多是很凭直觉然后做各种试验来确定哪一个更好
kmvan
2015-03-20 19:47:36 +08:00
同意ls,没有一套方案就适合所有站点。
要根据不同类型的站点来定制不同的缓存方案。而且并不是说请求越少,内联越多,加载就越快,具体问题具体分析。
jiayao321
2015-03-21 08:31:39 +08:00
@kmvan 哈哈,一直想吐槽这个头像很久了,楼主P得好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/178226

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX