Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Speed up Auto-reload in Meteor.js

After saving a file with new changes in Meteor.js, the server will restart and the browser will window reload.

Question: Sometimes it takes longer than usual to reload after saving the file, and this appears to be random. Is there a way to trigger the auto-reload more quickly?

It appears that the server restart quickly, but the browser reload much more slowely.

After the Meteor server have restarted, the webpage becomes unresponsive for 30 sec and the Network tab shows websocket pending...

I'm using Meteor 0.7.0.1 with Meteorite 0.6.16 on Node.js v0.10.22 on Mac OSX, connecting to a remote MongoDB server.

enter image description here

like image 502
Nyxynyx Avatar asked Dec 31 '13 18:12

Nyxynyx


3 Answers

The auto reload takes time if your project is big. Meteor basically has to rebuild the javascript up. There are a lot of things that can influence the time it takes.

Some basics of it are:

  • The bigger the project & more js files/packages the longer it would take
  • If you've disabled websockets the server will appear to take longer to restart
  • If you're using --production as a flag it will take longer to rebuild but faster to load in the browser
  • If you use external css/fonts via cdn and stuff it can take a bit longer sometimes to redownload these files, it depends on your connection. Try checking your Network tab in the chrome developer console to see if there is any particular file taking a while and temporarily host it locally instead.
  • If you're hotcode reloading after an error there could be slight delays as meteor tries to recover from the error.

There are a couple of other things too. If you're using Meteor UI with the --release flag some builds have memory leaks and get slower and slower the more you hot code reload.

If you're developing on windows there are a few issues with hot code reloads. Meteor on windows is unofficial and you sometimes have to ctrl+c and restart it to get it to boot faster.

There isn't alot that you can do to speed it up besides beefing up your computer up or moving stuff run in Meteor.startup into a cron job. Every hot code reload would redo the tasks in your Meteor.startup.

The one that bothers me the most with hot code reloads is the fonts from Google fonts via the @import css statements. Sometimes google doesn't serve the fonts very quickly especially when I keep reloading them. I temporarily disable them/host them locally. I don't host locally in production because different browsers sometimes serve up fuzzy fonts on windows.

like image 70
Tarang Avatar answered Nov 12 '22 12:11

Tarang


I revived an old project which had been running fine in 2014 with a fresh install of meteor, but found startup and restarts were really slow (over 30 seconds). (Possibly updating node or meteor had triggered this.)

I noticed that the project's .meteor/release contained [email protected]

I ran:

meteor update

in the project's root folder.

My release file now contains [email protected], and many of my packages were updated. Now restarts are significantly faster (about 10 seconds)!


By the way, I point MONGO_URL at the mongodb on my localhost, so meteor doesn't have to spin up a new mongodb when I start the app.

like image 1
joeytwiddle Avatar answered Nov 12 '22 13:11

joeytwiddle


Seems to be solved with 1.3, but for now it is in beta.

meteor update --release [email protected]

From 6-10s to 1-2s.

like image 1
BAR Avatar answered Nov 12 '22 14:11

BAR