小编Mic*_*ich的帖子

Http性能 - 许多小请求或一个大请求

场景:

  1. 在我的网站上,我展示了书籍.
  2. 用户可以将每本书添加到"稍后阅读"列表中.

行为:

当用户进入该站点时,他们会看到一系列书籍.其中一些已经在他们的"Read Later"列表中,有些则不是.

用户在每本书旁边都有一个指示,告诉他们该书是否已被添加到列表中.

我的问题

我在辩论哪种选择对我的情况是理想的.

选项1:

  1. 对于每本书,查询服务器是否已存在于用户列表中.
  2. 更新每本书的指标.

Pro: 对服务器的请求非常小,响应非常简单(真或假).

Con:在一本有30本书的页面中,我将发送30个单独的http请求,它们可以阻止套接字,并且考虑到浏览器和服务器必须为每个事务执行整个握手,这个请求相当慢.

选项2:

  1. 我查询服务器一次,并获得一个响应,其中包含"Read Later"列表中的完整书籍列表作为数组.
  2. 在浏览器中,我查看了数组,并根据它是否存在于数组中来更新每本书的指示.

亲:我只提出一个请求,并立即更新所有书籍的指标.

Con: "Read Later"列表可能有数百本书,传递一个大数组可能会证明是缓慢而过度的.特别是在屏幕上没有出现30本书的情况下,只有2-3本.(也就是说,我想检查某个书是否在列表中,为此我让服务器从列表中向客户端发送整个书籍列表).

所以,

你会采用哪种方式来最大限度地提高性能:1还是2?

我有什么替代品吗?

performance http

16
推荐指数
3
解决办法
6541
查看次数

节点在一段时间后停止响应

我的节点服务器正常运行.绝对没有问题.然后在某个(随机?)时间点,它停止响应请求.(之前它确实不间断地响应了几个小时.)

没有错误.服务器仍然可以执行内部进程,但不响应请求.

有了这个,请求正在进入服务器,如日志所示:

GET / - - ms - -
GET / - - ms - -
GET /upload - - ms - -
GET /profile - - ms - -
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚它什么时候被触发,发生了什么,以及它为什么会发生.

一旦服务器停止响应,它将永远不会再响应.重新启动服务器可以解决问题,直到再次发生.

有人遇到过这种行为吗?

更新:

  1. 服务器永远不会崩溃,只是停止响应.
  2. 这个应用程序已经超过一年了,工作正常,所以我怀疑这是一个基本的,而是其他的东西.
  3. 最近的更改:开始使用YouTube SPF
  4. 最近的更改:连接到远程服务器上的MongoDB而不是localhost

同样,服务器永远不会崩溃,只是停止响应.

这些是我用于服务器的组件:

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)

node.js

9
推荐指数
1
解决办法
1348
查看次数

Tailwind CSS,类优先级不受尊重

我有以下元素:

<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 开发工具:

在此输入图像描述

关于原因以及如何解决它有什么见解吗?

谢谢!

tailwind-css

9
推荐指数
1
解决办法
6117
查看次数

仅当ref不为null时才尝试填充mongoose - 不工作

我正在尝试获取包含作者信息的书籍清单.

有些用户已被删除,因此他们在数据库中不再有文档,因此,他们的信息为空.

如果他们的创作者仍然存在,我只想拉书.

这是我的代码:

  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字段为空.这是为什么?

mongoose mongodb node.js

8
推荐指数
1
解决办法
5310
查看次数

Last-Modified标头是Nginx上的错误日期

今天,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)

nginx last-modified

8
推荐指数
0
解决办法
554
查看次数

有没有办法在mongoDB中索引文档来填充其引用?

如果我有这两个集合:

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.我是否可以通过用户名搜索它,即使用户名未明确存储在书籍集合中也可以搜索?

换句话说,是否可以(或建议)索引填充的集合?

谢谢

mongoose mongodb

7
推荐指数
1
解决办法
543
查看次数

如何在visual studio中隐藏排除的文件?

我有一个包含数百个页面类和控件的项目.其中许多被排除在外,但是当它们出现在项目浏览器中时,它们会使它变得混乱,并且很难找到我需要的文件.我不想删除它们,因为每隔一段时间我就会回复它们进行审核.有没有办法用按钮切换显示/隐藏排除的文件?

我没有显示所有文件的按钮.看图: 在此输入图像描述

visual-studio

6
推荐指数
1
解决办法
7361
查看次数

防止泛滥/滥用api请求的一些策略是什么

我的服务器(节点)上有一个 API,可以将新数据写入我的数据库。要使用 API,用户需要提供充当标识符的令牌。因此,如果有人淹没我的数据库或滥用 api,我可以分辨出它是谁。

但是,我可以使用哪些技术来防止淹没或挂起我的服务器的能力?请注意,对 API 的大多数请求都是由服务器本身完成的,因此理论上我可能会每秒从我自己的服务器地址收到数十个请求。

我很想得到一些阅读材料的参考。

谢谢!

security api node.js passport.js

4
推荐指数
1
解决办法
2389
查看次数

多个微型实例与一个大型 EC2 实例

我们的网站变得越来越慢,我们需要升级。我们目前使用的是 AWS,拥有 1 个微型 EC2 实例,事实证明,当我们的网站流量较少时,该实例是有效的。现在,当我们的流量增加时,我们的网站速度就会变得越来越慢。

我们似乎无法解决争论。哪个会更好:

  1. 添加多个额外的微型/小型实例,并由 nginx 或亚马逊云计算管理它们

或者

  1. 将我们的微型实例升级为大型/超大实例。

考虑到服务器要执行的任务很简单,并且考虑到 RAM 总量和处理能力类似,这会更有效。1个大的,还是很多个小的?

谢谢

amazon-ec2 amazon-web-services

3
推荐指数
1
解决办法
3352
查看次数

将对象的*any*属性设置为默认值

我想知道是否可以覆盖对象的未启动键的"未定义",以便:

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

javascript

2
推荐指数
1
解决办法
70
查看次数