Yahoo奇摩 網頁搜尋

搜尋結果

  1. 錯誤類型. 一般來說,當你的編碼有錯誤時,主要有兩種類型. 語法錯誤 :在編碼中有一些拼字錯誤導致程式完全或部分沒有正常運作。 在這個狀況下,通常你會獲得一些錯誤訊息。 只要對工具熟悉以及了解錯誤訊息的意思,這種錯誤通常好修正! 邏輯錯誤 :這種錯誤代表程式碼的語法正確,但程式完成的部分不是開發者想做的,意即程式碼執行成功,但返回錯誤的結果。 這種錯誤通常比 語法錯誤 還要難修正,因為並沒有錯誤訊息讓我們可以直接地知道程式碼的問題。 好的,但事情並沒有那麼單純——當你越深入,就會發現更多不同的因素。 但上述的分類已經足夠應付初期的工程師職涯了。 接著,我們將更深入來討論這兩個類型。 一個錯誤範例. 讓我們從剛剛的猜數字遊戲開始——在這個版本中,我們將故意引入一些錯誤以便從中學習。

  2. 优化 JavaScript 的下载. 最高效、最不阻塞的 JavaScript 是根本不使用 JavaScript。. 你应该尽量少使用 JavaScript。. 以下是一些需要记住的点:. 并非总是需要框架 :你可能熟悉使用某个 JavaScript 框架 。. 如果你对使用该框架有经验和信心,并且喜欢它提供的所有工具 ...

  3. 首先查看开发者控制台,看是否存在语法错误,然后尝试修复。 详见下文。 修复语法错误. 以前的课程中,你学会了在 开发工具 JavaScript 控制台 中输入一些简单的 JavaScript 命令。 (如果你忘记了如何在浏览器中打开它,可以直接打开上面的链接)。 更实用的是,当 JavaScript 代码进入浏览器的 JavaScript 引擎时,如果存在语法错误,控制台会提供出错信息。 现在我们去看一看。 打开 number-game-errors.html 所在的标签页,然后打开 JavaScript 控制台。 你将看到以下出错信息: 这个错误容易跟踪,浏览器为你提供了几条有用的信息(截图来自 Firefox,其他浏览器也提供类似信息)。 从左到右依次为: 红色“!”表示这是一个错误。

    • 概览
    • 短连接
    • 长连接
    • HTTP 流水线
    • 域名分片
    • 结论

    连接管理是一个 HTTP 的关键话题:打开和保持连接在很大程度上影响着网站和 Web 应用程序的性能。在 HTTP/1.x 里有多种模型:短连接、长连接和 HTTP 流水线。

    HTTP 的传输协议主要依赖于 TCP 来提供从客户端到服务器端之间的连接。在早期,HTTP 使用一个简单的模型来处理这样的连接。这些连接的生命周期是短暂的:每发起一个请求时都会创建一个新的连接,并在收到应答时立即关闭。

    这个简单的模型对性能有先天的限制:打开每一个 TCP 连接都是相当耗费资源的操作。客户端和服务器端之间需要交换好些个消息。当请求发起时,网络延迟和带宽都会对性能造成影响。现代浏览器往往要发起很多次请求(十几个或者更多)才能拿到所需的完整信息,证明了这个早期模型的效率低下。

    有两个新的模型在 HTTP/1.1 诞生了。首先是长连接模型,它会保持连接去完成多次连续的请求,减少了不断重新打开连接的时间。然后是 HTTP 流水线模型,它还要更先进一些,多个连续的请求甚至都不用等待立即返回就可以被发送,这样就减少了耗费在网络延迟上的时间。

    要注意的一个重点是 HTTP 的连接管理适用于两个连续节点之间的连接,它是逐跳(Hop-by-hop)标头,而不是端到端(End-to-end)标头。当模型用于从客户端到第一个代理服务器的连接和从代理服务器到目标服务器之间的连接时(或者任意中间代理)效果可能是不一样的。HTTP 协议头受不同连接模型的影响,比如 Connection 和 Keep-Alive,就是逐跳标头标头,它们的值是可以被中间节点修改的。

    一个相关的话题是 HTTP 连接升级的概念,其中 HTTP/1.1 连接升级为一个不同的协议,比如 TLS/1.0、Websocket、甚至明文形式的 HTTP/2。更多细节参阅协议升级机制。

    HTTP 最早期的模型和 HTTP/1.0 的默认模型,是短连接。每一个 HTTP 请求都由它自己独立的连接完成;这意味着发起每一个 HTTP 请求之前都会有一次 TCP 握手,而且是连续不断的。

    TCP 协议握手本身就是耗费时间的,所以 TCP 可以保持更多的热连接来适应负载。短连接破坏了 TCP 具备的能力,并且新的冷连接降低了其性能。

    短连接有两个比较大的问题:创建新连接耗费的时间尤为明显,另外 TCP 连接的性能只有在该连接被使用一段时间后(热连接)才能得到改善。为了缓解这些问题,长连接的概念便被设计出来了,甚至在 HTTP/1.1 之前。或者,这被称之为一个 keep-alive 连接。

    一个长连接会保持一段时间,重复用于发送一系列请求,节省了新建 TCP 连接握手的时间,还可以利用 TCP 的性能增强能力。当然这个连接也不会一直保留着:连接在空闲一段时间后会被关闭(服务器可以使用 Keep-Alive 协议头来指定一个最小的连接保持时间)。

    长连接也还是有缺点的;就算是在空闲状态,它还是会消耗服务器资源,而且在重负载时,还有可能遭受 DoS 攻击。这种场景下,可以使用非长连接,即尽快关闭那些空闲的连接,也能对性能有所提升。

    HTTP/1.0 里默认并不使用长连接。把 Connection 设置成 close 以外的其他参数都可以让其保持长连接,通常会设置为 retry-after。

    备注: HTTP 流水线在现代浏览器中并不是默认被启用的:

    默认情况下,HTTP 请求是按顺序发出的。下一个请求只有在当前请求收到响应过后才会被发出。由于会受到网络延迟和带宽的限制,在下一个请求被发送到服务器之前,可能需要等待很长时间。

    流水线是在同一条长连接上发出连续的请求,而不用等待应答返回。这样可以避免连接延迟。理论上讲,性能还会因为两个 HTTP 请求有可能被打包到一个 TCP 消息包中而得到提升。就算 HTTP 请求不断的继续,尺寸会增加,但设置 TCP 的最大分段大小(MSS)选项,仍然足够包含一系列简单的请求。

    并不是所有类型的 HTTP 请求都能用到流水线:只有幂等方式,比如 GET、HEAD、PUT 和 DELETE 能够被安全地重试。如果有故障发生时,流水线的内容要能被轻易的重试。

    作为 HTTP/1.x 的连接,请求是序列化的,哪怕本来是无序的,在没有足够庞大可用的带宽时,也无从优化。一个解决方案是,浏览器为每个域名建立多个连接,以实现并发请求。曾经默认的连接数量为 2 到 3 个,现在比较常用的并发连接数已经增加到 6 条。如果尝试大于这个数字,就有触发服务器 DoS 保护的风险。

    如果服务器端想要更快速的响应网站或应用程序的应答,它可以迫使客户端建立更多的连接。例如,不要在同一个域名下获取所有资源,假设有个域名是 www.example.com,我们可以把它拆分成好几个域名:www1.example.com、www2.example.com、www3.example.com。所有这些域名都指向同一台服务器,浏览器会同时为每个域名建立 6 条连接(在我们这个例子中,连接数会达到 18 条)。这一技术被称作域名分片。

    改进后的连接管理极大的提升了 HTTP 的性能。不管是 HTTP/1.1 还是 HTTP/1.0,使用长连接——直到进入空闲状态——都能达到最佳的性能。然而,解决流水线故障需要设计更先进的连接管理模型,这些模型已经被纳入 HTTP/2 了。

  4. JavaScript 是一门跨平台、面向对象的脚本语言,它能使网页可交互(例如拥有复杂的动画,可点击的按钮,通俗的菜单等)。. 另外还有高级的服务端 Javascript 版本,例如 Node.js,它可以让你在网页上添加更多功能,不仅仅是下载文件(例如在多台电脑之间的协同 ...

  5. 请注意, fetch 规范与 jQuery.ajax() 主要有以下的不同:. 当接收到一个代表错误的 HTTP 状态码时,从 fetch() 返回的 Promise 不会被标记为 reject ,即使响应的 HTTP 状态码是 404 或 500。. 相反,它会将 Promise 状态标记为 resolve(如果响应的 HTTP 状态码不在 200 - 299 的范围 ...

  6. This file contains our first component, App, and a few other lines of code: js. import React from "react"; import logo from "./logo.svg"; import "./App.css"; function App() { return ( <div className="App"> <header className="App-header"> <img src={logo} className="App-logo" alt="logo" /> <p>.