小编Geo*_*ris的帖子

缓存控制不可变标头

我正在阅读有关不可变标头的内容,我发现这篇文章说:

缓存控制:max-age=365000000,不可变

当支持不可变的客户端看到此属性时,它应该假设该资源(如果未过期)在服务器上未更改,因此不应为其发送条件重新验证(例如 If-None-Match 或 If-Modified-Since)来检查更新。纠正可能的损坏(例如 Firefox 中的移位重新加载)从不使用条件重新验证,如果您担心不可变对象已损坏,那么对它们进行处理仍然有意义。

来源

我无法理解这句话“如果未过期,则在服务器上未更改,因此不应发送有条件的重新验证”

默认情况下,客户端在 max-age 到期之前不会发送重新验证。

那么首先定义不可变的意义何在呢?

caching header cache-control http-headers

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

节点的事件循环阶段回调

我正在阅读有关节点的事件循环阶段的内容,并说

  • 计时器:此阶段执行由 setTimeout() 和 setInterval() 安排的回调。
  • 挂起的回调:执行推迟到下一个循环迭代的 I/O 回调。
  • 空闲,准备:仅内部使用。
  • poll:检索新的I/O事件;执行 I/O 相关回调(几乎所有回调,关闭回调、计时器调度的回调和 setImmediate() 除外);节点会在适当的时候阻塞在这里。
  • check:setImmediate() 回调在这里被调用。
  • 关闭回调:一些关闭回调,例如socket.on('close', ...)。

所以这里我有一个简单的代码来测试上面的一些阶段。当您执行代码时,您会得到以下输出:

  1. 关闭
  2. 即时
  3. 暂停

但根据文档,套接字回调是阶段的最后一个。为什么先执行呢?

let socket = require("net").createServer();

socket.on("data", function (data) {
  console.log(data.toString());
});

socket.on("close", function (data) {
  console.log("close");
});

socket.listen(8080);

const fs = require("fs");

fs.readFile("readme.txt", () => {
  socket.close();
  setTimeout(() => {
    console.log("timeout");
  }, 0);

  setImmediate(() => {
    console.log("immediate");
  });
});
Run Code Online (Sandbox Code Playgroud)

event-loop node.js

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

React useQuery 导致数据前后多次重新渲染

我有一个简单的应用程序,可以调用 API。我正在使用反应查询来进行获取并缓存数据。然而,即使该函数被包装在 中React.memouseQuery也会无缘无故地导致多次重新渲染。应该是2个效果图而不是8个。

import React, { memo } from "react";
import logo from "./logo.svg";
import "./App.css";
import { useQuery } from "react-query";
import Axios from "axios";

const fetchTodoList = async (key, id) => {
  const { data } = await Axios.get(
    `https://jsonplaceholder.typicode.com/posts/`
  );
  return data;
};

function App() {
  const { isLoading, isError, data, error } = useQuery("todos", fetchTodoList);
  console.log(isLoading, data);
  if (isLoading) {
    return <span>Loading...</span>;
  }

  if (isError) {
    return <span>Error: {error.message}</span>;
  }

  // also …
Run Code Online (Sandbox Code Playgroud)

reactjs react-query

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

可变字体和普通字体有什么区别

我正在阅读有关可变字体的内容,但我不明白这个概念。

有 5 个注册轴 wght、wdth、ital、slnt、opsz。字体粗细已经预先存在,我们每天都在我们的 css 中使用它。

那么这里的可变字体和常规字体有什么区别呢?

另外,如果我在元素中放置一个范围font-weight: 100 500然后使用,我看不出任何区别。font-weight: 600<p>

即使我将其限制为 500,重量 600 仍能继续工作。

@font-face {
  font-family: "sketch_3dregular";
  src: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/57225/IBMPlexSansVar-Roman.woff2")
    format("woff2 supports variations"),
    url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/57225/IBMPlexSansVar-Roman.woff2")
    format("woff2-variations");
  font-weight: 100 500;
  font-stretch: 85% 100%;
}

html {
  font-size: 10px;
  margin: 0;
  font-family: "sketch_3dregular";
}

p {
  font-size: 1.4rem;
  line-height: 1.6;
  word-spacing: 0.6rem;
  font-weight: 600;
}
Run Code Online (Sandbox Code Playgroud)

css font-face font-family typeface

5
推荐指数
1
解决办法
351
查看次数

延迟脚本与预加载链接有何不同?

预加载:获取 CSS 样式表并在稍后应用它,获取 JavaScript 资产并稍后执行,等等。预加载提取不会阻止文档加载事件,并允许应用程序确定应用哪些资源、何时执行以及以何种顺序执行。

Defer:“延迟”在 HTML 解析期间预加载,并且只会在解析器完成后执行。

我无法理解这两个概念的差异。两者都在不阻塞解析器的情况下异步获取内容,然后在解析器完成后都可以执行。

那么有什么区别吗?

html javascript css preload deferred

5
推荐指数
1
解决办法
745
查看次数

相邻兄弟姐妹的边距折叠

我正在阅读关于 Margin Collapsing 的文章,我发现了这个:margin

相邻兄弟姐妹 相邻兄弟姐妹的边距被折叠(除非后一个兄弟姐妹需要清除浮动)。

我不明白最后一句话“除非后一个兄弟需要清除浮动”。有人可以举个例子吗?

谢谢

css margin css-float

5
推荐指数
1
解决办法
266
查看次数

节点集群有多个进程监听同一个端口

我在阅读有关 Node js 中的集群的内容时遇到了一个简单的示例,而主文件创建了四个子进程,每个进程都监听 8080 端口。

代码运行良好,但我不明白:

如何让多个子进程监听同一个端口?

我期待收到这样的消息

错误:监听 EADDRINUSE:地址已在使用中 :::8080

const cluster = require("cluster");

if (cluster.isMaster) {
  for (let i = 0; i <= 4; i++) cluster.fork();
} else {
  require("./test.js");
}
Run Code Online (Sandbox Code Playgroud)

测试.js

const http1 = require("http");
http1
  .createServer((req, res) => {
    console.log("request1");
    res.write("hello1");
    res.end();
  })
  .listen(8080, () => {
    console.log("begin");
  });
Run Code Online (Sandbox Code Playgroud)

node.js node-cluster

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

Next.js 禁用文件系统路由

根据文档 文档,将useFileSystemPublicRoutes配置选项设置为 false 可以防止基于 /pages 目录中的文件进行路由。但我无法理解它的真正作用,因为他们没有详细说明。

如果有人能用简单的例子向我解释这个配置的作用,我将不胜感激。

reactjs next.js

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