# 需要再blog repo打开配置 Access-> Accessible from repositories owned by the user 'yiGmMk' -name:Checkoutblog uses:actions/checkout@v4 with: token:${{secrets.GH_TOKEN}} path:blog repository:yiGmMk/blog ref:master
除了使用线程之外,还有其他方法可以实现并发/并行,例如,虽然不如线程高效,但生成多个进程是另一种方法。由于 CPU 并行和并发地运行不同的进程,因此你可以使用多个进程进行多任务处理。这里的缺点是,每个进程都有其自己分配的内存空间,并且它们默认不共享它们的内存空间,就像线程一样。因此,如果你需要不同的进程在相同的状态下运行,你可能需要某种 IPC 机制,如共享内存段、管道、消息队列,甚至是数据库。
一旦主代码中的所有指令都执行完毕,NodeJS 运行时环境就会开始调用回调函数。你也可以将你编写的主代码视为默认被调用的回调。在上面的示例中,第一个 setTimeout 使用提供的回调函数执行,第二个 setTimeout 使用提供的回调函数执行。1 秒过后,它开始刷屏“a”s。你永远不会看到“b”s,因为一旦调用了第一个回调,它就会用它丑陋的 while 循环永远支配着主线程!因此,永远不会调用第二个回调。
这有一些重要的影响。首先,它减少了诸如竞争条件之类的问题的可能性,尽管它们仍然可能发生,尤其是与 C 之类的多线程语言相比。为什么?在类似 C 的语言中,CPU 在指令级别交错线程,而在这里,它主要发生在回调级别。只要你避免使用依赖于带有嵌套回调的 async 函数的复杂逻辑,就可以确定执行流程保持不中断,基本上是顺序的。
Text fragments的一个有趣行为是,如果你链接到通过“查找页面”功能可发现的隐藏内容(例如,具有设置为“直到找到”的 hidden 属性的元素的子元素或关闭详细信息元素的内容),隐藏内容将变得可见。让我们通过链接到 Scott O’Hara 博客上的这篇文章来查看此行为。博客包含默认关闭的详细信息元素。
You are an excellent translator, please translate the following into Chinese 1. Return to translation only 2. Don't change the content format, just translate 3. Returns copyable markdown content, such as lists, return "- xxx" and surround it with ```.
You are an excellent translator, please translate the following into Chinese 1. Return to translation only 2. Don't change the content format, just translate 3. Returns copyable markdown content, such as lists, return "- xxx" and surround it with ```.
SSR 确保搜索引擎看到与用户相同的内容。使用客户端渲染,总是存在机器人可能错过一些动态加载内容的风险。
改进的加载时间
搜索引擎喜欢快速的网站。SSR 可以显著减少初始加载时间,这可能在排名中给你带来一些优势。
移动优先索引
随着谷歌的移动优先索引,SSR 在较慢的移动连接上的性能优势变得更加重要。
预览
虽然严格来说不是搜索引擎功能,但 SSR 使在社交平台上共享内容时生成准确的预览变得更加容易。这可以通过增加参与度和反向链接来间接提升你的 SEO。 SSR 是 SEO 的强大工具,但它不是唯一因素。内容质量、相关性和整体用户体验在搜索引擎排名中至关重要。SSR 只是确保搜索引擎可以有效地抓取和索引你的内容,潜在地在可见性和性能指标上给你带来优势。
如何实际实现 SSR
实现 SSR 并不需要很复杂。让我们来看看如何使用 Next.js(一个流行的 React 框架,使 SSR 变得简单)来实现它:
设置一个 Next.js 项目。
创建服务器端渲染的页面。
让 Next.js 处理完全渲染的 HTML 和客户端水合。
以下是一个使用 App Router 的简单 Next.js 示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// app/page.js asyncfunctiongetData() { const res = awaitfetch('<https://api.example.com/data>') if (!res.ok) { thrownewError('Failed to fetch data') } return res.json() }
exportdefaultasyncfunctionHome() { const data = awaitgetData()
Local 文件夹用于存储无法从你的用户配置文件中移动的文件,也经常包含可能太大而无法与服务器同步的文件。例如,它可能存储一些视频游戏 运行所需的文件或你的网络浏览器缓存,这些文件可能太大或没有意义转移到其他地方。开发人员还可能使用 Local 来存储与此特定计算机上的 文件路径相关的信息。将这些配置文件移动到另一台计算机可能会导致程序停止工作,因为文件路径不匹配。其他存储在这里的文件往往是日志文 件、临时文件或非必要数据。
什么是 LocalLow
LocalLow 与 Local 非常相似,但名称中的 “low” 指的是授予应用程序的较低访问级别。例如,以隐身模式运行的浏览器可能仅限于只能访问 LocalLow 文件夹,以防止它能够访问存储在 Local 中的正常用户数据。基本上,这是针对以更受限的安全权限运行的应用程序的。
什么是 Roaming
如果你在域(domain)(a network of computers with a central domain controller that handles your login)上使用 Windows 计算机,那么你可能熟悉 Roaming 文件夹。 如果在同一个域上登录其他设备,此文件夹中的文件将被同步,因为它们被认为是使用你的设备所必需的。这可能是你的网络浏览器收藏夹和书 签、重要的应用程序设置等。当存储的数据可以在设备之间移动而不会出现任何问题时,建议使用此文件夹。例如,《我的世界》将其世界文件、 截图等存储在 Roaming 文件夹中,因为这些文件都可以被获取并迁移到新设备,并且预计可以正常工作。Roaming 非常适合企业环境,包括 Outlook 配置文件和网络打印机配置等设置。它通过存储用户特定的设置和文件,帮助在网络中的不同计算机之间为用户带来一致的环境。