场景:
行为:
当用户进入该站点时,他们会看到一系列书籍.其中一些已经在他们的"Read Later"列表中,有些则不是.
用户在每本书旁边都有一个指示,告诉他们该书是否已被添加到列表中.
我的问题
我在辩论哪种选择对我的情况是理想的.
选项1:
Pro: 对服务器的请求非常小,响应非常简单(真或假).
Con:在一本有30本书的页面中,我将发送30个单独的http请求,它们可以阻止套接字,并且考虑到浏览器和服务器必须为每个事务执行整个握手,这个请求相当慢.
选项2:
亲:我只提出一个请求,并立即更新所有书籍的指标.
Con: "Read Later"列表可能有数百本书,传递一个大数组可能会证明是缓慢而过度的.特别是在屏幕上没有出现30本书的情况下,只有2-3本.(也就是说,我想检查某个书是否在列表中,为此我让服务器从列表中向客户端发送整个书籍列表).
所以,
你会采用哪种方式来最大限度地提高性能:1还是2?
我有什么替代品吗?
我的节点服务器正常运行.绝对没有问题.然后在某个(随机?)时间点,它停止响应请求.(之前它确实不间断地响应了几个小时.)
没有错误.服务器仍然可以执行内部进程,但不响应请求.
有了这个,请求正在进入服务器,如日志所示:
GET / - - ms - -
GET / - - ms - -
GET /upload - - ms - -
GET /profile - - ms - -
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚它什么时候被触发,发生了什么,以及它为什么会发生.
一旦服务器停止响应,它将永远不会再响应.重新启动服务器可以解决问题,直到再次发生.
有人遇到过这种行为吗?
更新:
同样,服务器永远不会崩溃,只是停止响应.
这些是我用于服务器的组件:
var express = require('express');
var app = express();
var port = process.env.PORT || 8080;
var morgan = require('morgan');
var cookieParse = require('cookie-parser');
var session = require('express-session');
var mongoose = require ('mongoose');
var bodyParser = require('body-parser');
var configDB = …Run Code Online (Sandbox Code Playgroud) 我有以下元素:
<td class="min-w-[10rem] max-w-[10rem] overflow-ellipsis text-sm text-text-light px-3 min-w-0"></td>
Run Code Online (Sandbox Code Playgroud)
它的所有类名都是通过组件自动生成的,除了最后一个min-w-0.
由于min-w-0是列出的最后一个类名,我希望它会覆盖min-w-[10rem]列出的第一个类名。
然而,由于某种原因,min-w-[10rem]似乎优先。
来自 Chrome 开发工具:
关于原因以及如何解决它有什么见解吗?
谢谢!
我正在尝试获取包含作者信息的书籍清单.
有些用户已被删除,因此他们在数据库中不再有文档,因此,他们的信息为空.
如果他们的创作者仍然存在,我只想拉书.
这是我的代码:
Book.find({_creator:{$ne:null}}).populate(
{
path: '_creator',
match: { _id: { $ne: null }}
})
.exec(function (err,books) {
if(err) throw err;
if(books) {
res.send(books)
}
})
Run Code Online (Sandbox Code Playgroud)
这是它返回的内容:
[
{
"_id":"55d98e6a4de71010099c59eb",
"dateOfCreation":"2015-08-23T09:12:10.095Z",
"_creator":null,
"__v":0,
"coverUrl":"cover14403211323926quv.png",
"description":"asdasd",
"name":"asdasd"
}
]
Run Code Online (Sandbox Code Playgroud)
请注意,_creator字段为空.这是为什么?
今天,2017年2月24日,我更新了服务器上的一些静态文件。但是我得到的响应头是:
Last-Modified:Thu, 19 Jan 2017 19:17:33 GMT
Server:nginx/1.11.3
Run Code Online (Sandbox Code Playgroud)
这是一个多月前的事。为什么最后修改的标头不更新?
当我通过外壳列出外壳上的文件时ls -l,清楚地表明该文件已被修改:
ec2-user ec2-user 15298 Feb 24 20:33
Run Code Online (Sandbox Code Playgroud) 如果我有这两个集合:
Book: {
title: String,
description: String
author: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
}
User: {
_id: (generated by mongo)
username: String
}
Run Code Online (Sandbox Code Playgroud)
我想索引Book for FTS.我是否可以通过用户名搜索它,即使用户名未明确存储在书籍集合中也可以搜索?
换句话说,是否可以(或建议)索引填充的集合?
谢谢
我有一个包含数百个页面类和控件的项目.其中许多被排除在外,但是当它们出现在项目浏览器中时,它们会使它变得混乱,并且很难找到我需要的文件.我不想删除它们,因为每隔一段时间我就会回复它们进行审核.有没有办法用按钮切换显示/隐藏排除的文件?
我没有显示所有文件的按钮.看图:

我的服务器(节点)上有一个 API,可以将新数据写入我的数据库。要使用 API,用户需要提供充当标识符的令牌。因此,如果有人淹没我的数据库或滥用 api,我可以分辨出它是谁。
但是,我可以使用哪些技术来防止淹没或挂起我的服务器的能力?请注意,对 API 的大多数请求都是由服务器本身完成的,因此理论上我可能会每秒从我自己的服务器地址收到数十个请求。
我很想得到一些阅读材料的参考。
谢谢!
我们的网站变得越来越慢,我们需要升级。我们目前使用的是 AWS,拥有 1 个微型 EC2 实例,事实证明,当我们的网站流量较少时,该实例是有效的。现在,当我们的流量增加时,我们的网站速度就会变得越来越慢。
我们似乎无法解决争论。哪个会更好:
或者
考虑到服务器要执行的任务很简单,并且考虑到 RAM 总量和处理能力类似,这会更有效。1个大的,还是很多个小的?
谢谢
我想知道是否可以覆盖对象的未启动键的"未定义",以便:
var obj={}
console.log(obj.randomKey)
output in console:
0
Run Code Online (Sandbox Code Playgroud)
我很清楚我"忘记"启动obj.randomKey.这实际上是我的问题.
我可以为对象或类的任何未启动的键设置默认值吗?
如果你很好奇
我问的原因是我试图解决一个允许用"本地"语言创建对象的谜语,例如:
const jane = new Thing('Jane')
jane.name // => 'Jane'
// can define boolean methods on an instance
jane.is_a.person
jane.is_a.woman
jane.is_not_a.man
jane.is_a_person // => true
jane.is_a_man // => false
Run Code Online (Sandbox Code Playgroud)
这是我采取的第一个策略:)
更新: 我解决了谜语:)如果有人有兴趣尝试:https://www.codewars.com/kata/the-builder-of-things/train/javascript
node.js ×3
mongodb ×2
mongoose ×2
amazon-ec2 ×1
api ×1
http ×1
javascript ×1
nginx ×1
passport.js ×1
performance ×1
security ×1
tailwind-css ×1