RT 租着一台外国的服务器学习网络技术,但是发现 ROR 建起来的网站访问很慢。。。 就是第一次打开一个页面卡 1min 才打开,但是这明显超过正常人的忍耐极限了。 第二次打开同一个页面就快很多。 1.这是在哪个环节出现了问题呢?图片大小?css?还是 js? 2.如果无法判断,我可以通过什么实用工具进行判断呢? 请大家不要引用术语,我可能看不懂。。。
若是使用 nginx 服务器的话,需要让 rails 放弃对静态资源的管理
config.serve_static_assets = false
这样会解决很多 js/css 报错的问题
@somejump 楼主我们游戏的 server 是 rails 写的,服务器都在美国,api 的 resp 时间也才 300ms 左右,所以访问慢跟 ROR 没关系。其次你可以先通通过 chrome 的 debug 工具看看你访问页面的时间耗时,再者最近国内网络比较抽风,访问国外经常会很慢,但是如你所说的 1min 不至于。
#1 楼 @ailen 谢谢,我通过这个 DEBUG 工具看了一下,发现 rails 在获取几个 js 的时候花费时间大于 1s
jquery.ui.widget-da1b9b310f5b48a4ef262815b8965d91.js?body=1 GET 404 script (index):41 0 B 4.49 s
jquery.iframe-transport-3d6f14f09aa72eb4e09e47e851ceb0d8.js?body=1 GET 404 script (index):42 0 B 4.57 s
jquery.fileupload-6958164ac1bf6b96d360ed7c52426bb1.js?body=1 GET 404 script (index):43 0 B 4.81 s
basic-499ed96f03a6499972f0e9f358d0a7c0.js?body=1 GET 404 script (index):44 0 B 5.37 s
tmpl-ea45f6b1f117c1f3d1578495b7ca7bca.js?body=1 GET 404 script (index):45 0 B 5.45 s
qiniu_direct_uploader-c5b052baa6c8f49526d2d2f26293f6b9.js?body=1 GET 404 script (index):46 0 B 4.92 s
home-92d23ecf60c9ec6be8cc0fe6c10064e8.js?body=1 GET 304 script (index):47 232 B 5.13 s
但是好像页面上正在运行的 js 并没有受到影响
请问 rails 是怎么处理 js 获取的?
如果有讲这方面的资料,我也乐意自学一下。
可能原因:
话说,你给的信息太少。至少得给出一页完整的日志、你的配置文件,启动的 server 等有用的信息,不怕多就怕没有啊
谢谢大家的帮助。我现在正在自学 Assets pipeline 我想问一下 rake assets:precompile 和另外一个 gem capistrano 有什么关系?二者可不可以一起用?
前者,是对 js、css 进行压缩预编译,减少 css、js 的大小以及请求 js、css 的数目;后者是 cap,自动打包发版工具,比如说,你要更新代码一般要做的事情:1 拉取分支、2、安装 bundle 依赖 3、对 js、css 进行压缩预编译 4、重启服务。因此,cap 是这个基本操作封装起来,有了 capistrano 这个自动化的 gem。 所以二者的关系比较明确了吧。
新加坡服务器(以前是米国),博客一直是 500ms 以内的响应时间,为了打开速度我的做法也是挺极端了
明白了,那我目前不打算再用 cap 了。我想问一下:
= javascript_include_tag "home", "data-turbolinks-track" => true
这段代码写出来后,为何我再 application require 了 home 依然报错
提示是:
Rails.application.config.assets.precompile += %w( home.js )
必须要这么做么?
还有我有些晕,application.js 的生成不是把所有的 js 合并成 application-指纹.js 了么?
那为何还会有 home-指纹.js jquery-指纹.js 这些东西呢?
@somejump
Rails.application.config.assets.precompile += %w( home.js )
上面这个问题你需要在 config/initializers/assets.rb
文件中把 home.js
添加进去。
#17 楼 @adamshen 在开发环境下这些 css,js 都不会出现 404 的情况,毕竟我也没有使用 assets pipeline
但是在生产环境下,一些 gem 里配有的 css,js 就算我在 application.js/css 文件中 require 它们,会报错但不会影响网站 js/css 实现
比如:
jquery-0ed465fbecf04ae913ca41ffdb083e24.js?body=1 GET 404 script (index):7 0 B 305 ms
jquery_ujs-90e9e71c91e43e7dad56d420bfb0f0c3.js?body=1 GET 404 script (index):8 0 B 829 ms
jquery.turbolinks-bf4145241a1f3c33ca16fcd46ca39409.js?body=1 GET 404 script (index):9 0 B 909 ms
turbolinks-3c4430349c04dd08ce7d3819bb2e7064.js?body=1 GET 404 script (index):10 0 B 909 ms
nprogress-265ad313635e9ccba89a71ddb330936e.js?body=1 GET 404 script (index):11 0 B 973 ms
nprogress-turbolinks-f33e6cee88a5842ce94cdf138ec989f2.js?body=1 GET 404 script (index):12 0 B 995 ms
这些都是 gem 提供的 js,它们能发挥作用,但是会在加载的时候报错 404,使网站访问变慢
我怀疑它们已经进入 application.js 里面了,所以功能可以实现,但是为什么会找不到呢?