Created
December 1, 2011 00:45
-
-
Save brikis98/1412326 to your computer and use it in GitHub Desktop.
Node.js performance tips
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Use built in or binary modules | |
var crypto = require('crypto'); | |
var hash = crypto.createHmac("sha1",key).update(signatureBase).digest("base64"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Disable socket pooling | |
var http = require('http'); | |
var options = {.....}; | |
options.agent = false; | |
var req = http.request(options) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
app.use(express.session({ secret: "keyboard cat" })); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- An example of a JavaScript template that can be rendered client side --> | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>LinkedIn Mobile</title> | |
</head> | |
<body> | |
<div class="header"> | |
<img src="http://mobile-cdn.linkedin.com/images/linkedin.png" alt="LinkedIn"/> | |
</div> | |
<div class="body"> | |
Hello <%= name %>! | |
</div> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{"name": "John"} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- An example of a simple webpage rendered entirely server side --> | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>LinkedIn Mobile</title> | |
</head> | |
<body> | |
<div class="header"> | |
<img src="http://mobile-cdn.linkedin.com/images/linkedin.png" alt="LinkedIn"/> | |
</div> | |
<div class="body"> | |
Hello John! | |
</div> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Good: write files asynchronously | |
fs.writeFile('message.txt', 'Hello Node', function (err) { | |
console.log("It's saved and the server remains responsive!"); | |
}); | |
// BAD: write files synchronously | |
fs.writeFileSync('message.txt', 'Hello Node'); | |
console.log("It's saved, but you just blocked ALL requests!"); |
well that depends how you cache, they wont always issue conditional gets. just seems a little weird to me I guess but thanks! was curious
For DisableSocketPooling, does that affect http.createServer() or in the case of express, app.listen()? I tried adding that to an express app and got:
Error: connect ECONNREFUSED
Any ideas?
that's for the http client
How to render HTML on client side and serve it with cdn?
@talentedmrjones: This is on the httpclient not on the server. This allows you to talk to the same host without using pooling
@kevbook: You can use underscore or dust or any js templating system to render on client and have the templates sitting in CDN
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
With the browser cache, there are still a number of requests sent out to check if a new version is available. Also, the browser cache is pretty small and you dont have control over its caching policy. This allows you to really control the cache and reduce the total number of requests.