对于CouchDB,您可以创建多个视图和/或多个设计文档.
在同一设计文档中对视图进行分组或将每个视图保留在自己的设计文档中是否更好?
好的,所以我有一个带有两个快速服务器的node.js应用程序.一个侦听端口80(HTTP),另一个侦听端口443(HTTPS).
现在,这些路线没有相同的路线.恰恰相反,大多数事情是通过HTTPS提供的,有些是通过HTTP提供的.但是,有一些重叠.
所以,我想知道有没有办法将路由"绑定"到secureApp和App,因为我称之为我不必两次写路由?
恩.现在我有两套相同的路由(一个用于HTTP,一个用于HTTPS):
app.get('/tweet-stats.json', function(req, res){
res.set('Content-Type', 'application/json');
res.send(publicTweetStatus());
});
secureApp.get('/tweet-stats.json', function(req, res){
res.set('Content-Type', 'application/json');
res.send(publicTweetStatus());
});
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
model.get('/tweet-stats.json', function(req, res){
res.set('Content-Type', 'application/json');
res.send(publicTweetStatus());
});
app.handle.bind(model);
secureApp.handle.bind(model);
Run Code Online (Sandbox Code Playgroud)
这可能吗?我会做更好的编码,我只管理所有端口上这个特定路由的一个实例.
我有一个快速的网络应用程序.在应用程序中,我有一个路由,可以对数据库进行多次调用.在每次调用期间,如果它失败,那么我将浏览器重定向到页面/暂时不可用(基本上是一个通用错误页面,不会让用户失望,只是说稍后再试).
伪代码的部分内容
app.get('/sign-in/twitter', function(req, res, next){
request({
'method' : 'GET',
// BLAH BLAH BLAH CALL TO DATABASE
// DATABASE CALLBACK
function (error, response, body){
if (response.statusCode === 200) {
// DO GOOD STUFF
}
else if (response.statusCode === 404) {
// DO COOL STUFF
}
else {
temporarilyUnavailable(req, res, next);
}
// DO MORE STUFF AND SEND A RESPONSE
}
}
}
Run Code Online (Sandbox Code Playgroud)
用于暂时不可用功能的伪代码的部分
res.set({
'Cache-Control' : 'private, no-cache, no-store, must-revalidate,
'Content-Type' : 'text/plain;charset=utf-8',
}
res.redirect(302, 'https://' + req.host + '/' …Run Code Online (Sandbox Code Playgroud) HTTPS很快(在初始页面加载时),而HTTPS是安全的.我有一个站点example.com,只有在用户登录时才需要安全(它使用安全cookie进行身份验证).
由于速度是第一印象中最重要的因素之一,我希望提供正常的HTTP页面(http://example.com),然后使用Javascript懒洋洋地升级到HTTPS.
if ( location.protocol === 'http:' ) {
$.ajax({
url: 'https://example.com',
cache: true,
success: function() {
window.top.location.replace('https://example.com');
}
);
}
Run Code Online (Sandbox Code Playgroud)
这样做会导致页面在新页面加载时"闪烁".有没有办法做到这一点,用户不太明显?
我有几个自定义模块,我每秒调用数百次,我想确保由于调用这些模块而没有性能影响.
示例模块 - random-string.js
module.exports = function() {
// Required modules
var logs = require(__dirname + '/logs.js'); // Custom logger
var uuid = require('node-uuid'); // Simple, fast generation of RFC4122 UUIDS
var randomString = uuid.v1() + uuid.v4();
logs.dev(randomString);
return randomString;
};
Run Code Online (Sandbox Code Playgroud)
如果我从另一个模块调用此模块(即require(__ dirname +'/ random-string.js'))并且它每秒被调用数百次,那么这是一次读取磁盘每次加载logs.js或节点UUID?
node.js ×3
express ×2
cloudant ×1
couchdb ×1
html5 ×1
https ×1
javascript ×1
performance ×1
ssl ×1