Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

使用EventSource加载混合文件如何?

  对于现代浏览器而言,使用浏览器自带的EventSource就可以实现服务器推送,根据昨天文章中介绍的思想,EventSource当然可以用于代码加载。但就目前而言这个方法并不实用,因为浏览器对EventSource的优化不充分,这篇文章只是提供一个实现思路而已。
  假如我们有两个文件需要混合加载: //a.js
console.log("我是 a.js");
//b.js
console.log("我是 b.js");
  首先在服务器程序上把他们混合成EventSource可用的格式: //mixture.php
header("content-type: text/event-stream");
$s=array('a.js','b.js'); //需要合并的文件列表
foreach($s as $i){
  $i=file_get_contents($i);
  $i=preg_replace('/\r\n|[\r\n]/',"\r\ndata:",$i);
  echo "data:$i\r\n\r\n";
};
  前端代码使用EventSource请求这个混合后的资源 <script>
var es=new EventSource('/mixture.php');
es.onmessage=function(e){
  console.log(e.data); //输出代码
  window.eval(e.data); //执行程序
},es.onerror=es.close;
</script>
  
  理论上,这是一种优秀的加载方式。但从性能测试的数据上来看,它不如传统的加载方式。性能损耗应该在EventSource的实现上,这是个比较冷门的API,具体的实现可能缺少优化。总之,至少我暂时不会采用这种方式。
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^