Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 改善RoR项目的时间响应_Javascript_Ruby On Rails 3_Coffeescript_Passenger - Fatal编程技术网

Javascript 改善RoR项目的时间响应

Javascript 改善RoR项目的时间响应,javascript,ruby-on-rails-3,coffeescript,passenger,Javascript,Ruby On Rails 3,Coffeescript,Passenger,在生产中,由于javascript加载,响应时间非常长,因此我正在寻找一种在不更改任何代码行的情况下改进它的方法 请注意,我正在使用: RubyonRails3.2 乘客(Apache2) 请给出建议从内容交付网络加载您的JS 如果您显示一些加载时间的分析信息(Chrome developer tools profiler就足够了),我们将能够提供更好的建议。请注意延迟属性: 我理解你说你不能更改应用程序,但是在第一页加载100kb的CSS和1Mb的JS似乎太过分了。我会认真考虑削减资源,以

在生产中,由于javascript加载,响应时间非常长,因此我正在寻找一种在不更改任何代码行的情况下改进它的方法 请注意,我正在使用:

  • RubyonRails3.2
  • 乘客(Apache2)

请给出建议

从内容交付网络加载您的JS


如果您显示一些加载时间的分析信息(Chrome developer tools profiler就足够了),我们将能够提供更好的建议。

请注意延迟属性:

我理解你说你不能更改应用程序,但是在第一页加载100kb的CSS和1Mb的JS似乎太过分了。我会认真考虑削减资源,以便按需加载

没有那么多的“修复”可以让代码库独立运行,但其中一些是:

  • 压缩资源(例如,使用“Content encoding=gzip”,)
  • 优化资源顺序(可能需要少量代码更改-)
  • 跨主机名并行下载(可能需要少量代码更改-)
  • 将内容放得更靠近用户(使用CDN)
  • 改善端到端网络基础设施
  • 使用aync资源(这可能只会给你一个更快的应用程序的错觉。页面可能会更快开始呈现,但取决于你的JS的性质,该应用程序可能只有在全部下载后才可用-)
  • 使用将来的HTTP到期头可以增加已经访问过该站点的用户不需要再次下载内容的机会

这是意料之中的,只是乘客旋转,但应该只在部署后的第一页加载时发生

如果这种情况经常发生,这意味着passenger正在关闭你的应用程序,所以你应该多看看如何配置passenger

一个选项是确保始终至少有一个实例使用此选项运行:

PassengerMinInstances 1

Chrome开发者工具显示:css文件的内容(97,7KB)需要14,53秒,而js文件(998KB)需要9,93秒。因此css的交付有问题。你应该优化它。此外,您的internet可能运行缓慢,或者您的服务器可能负担过重。css文件中约有2800行,js文件中约有28000行。我在服务器上还有一个用php编写的应用程序,它的响应速度很快,所以我确信服务器没有负担过重,我的互联网速度足够快。是的,我指的是初始化脚本和css时间。加载根页面需要30多秒!因此,我正在寻找一种减少响应时间的方法,也许你加载了很多不需要的脚本:你的根页面需要JS文件的28.000行吗?因此,也许你可以将你的代码拆分成不同的文件。加载的js是application.js文件,所以它会将所有的le js都拆分成28000行,但我的意思是你可以将
application.js
拆分成几个文件。例如,您可以通过控制器在
.js
上运行。这样,您就不会在所有页面上加载不必要的lib,而是只在需要它们的页面上加载。