PHP學習(第三天)

網站訪問流程

一、靜態網站訪問流程(如 index.html

請添加圖片描述

1. 流程是怎么樣的?

靜態網站的頁面內容固定,不需要服務器做額外計算,直接把文件返回給瀏覽器。訪問流程大致如下:

  1. 用戶輸入網址或點擊鏈接

    用戶在 個人設備(PC/手機) 的瀏覽器中輸入 URL(Uniform Resource Locator,統一資源定位符)。
    瀏覽器會 向 DNS 服務器 查詢對應域名的 IP 地址,找到目標服務器。

    例如訪問:

    http://localhost:8080/index.html
    

    對應的 IP 是 127.0.0.1(本機地址)。

  2. 瀏覽器發送 HTTP 請求

    • 瀏覽器向該 IP + 端口發起 TCP 連接(比如 8080)。

    • 通過這個連接,瀏覽器發送 HTTP 請求,例如:

      GET /index.html HTTP/1.1
      Host: localhost:8080
      
  3. 服務器響應請求

    • Web 服務器(Apache、Nginx 等)接收 TCP 連接,并處理 HTTP 請求。
    • 服務器找到對應的 index.html 文件(例如通過 Apache 或 Nginx 掛載部署在指定目錄下)。
    • 找到文件后,服務器 直接返回文件內容給瀏覽器
  4. 瀏覽器渲染頁面

    • 瀏覽器解析 HTML、CSS、JS 并顯示頁面。
    • 頁面中如果有圖片、字體或其他資源,會繼續發請求加載。

特點:服務器只是“送文件”,不需要額外計算。
這里的“計算”指的是:運行程序、處理邏輯或生成動態內容(比如 PHP、Node.js 等動態網站才會做這些)。

2.TCP 和 HTTP 是什么?

  • TCP(傳輸層)
    • 全稱:Transmission Control Protocol —— 傳輸控制協議
    • 作用:保證數據能從瀏覽器傳到服務器、再從服務器返回瀏覽器。
    • 類比:TCP 就像郵差,負責送信。
    • 瀏覽器先通過 TCP 建立連接(握手),確認可以安全傳輸數據。
  • HTTP(應用層)
    • 全稱:HyperText Transfer Protocol —— 超文本傳輸協議
    • 作用:定義具體要做什么,比如“我要哪個網頁”。
    • 類比:信里的內容,例如“GET /index.html HTTP/1.1”。
    • HTTP 的請求和響應是通過 TCP 這個“郵差”發送的。

3.DNS如何在因特網中找到對應的域名的ip?

3.1 DNS 查詢流程(分層查找)
  1. 本地 DNS 緩存
    • 先在操作系統或瀏覽器緩存里找有沒有對應的 IP。
    • 如果有,就直接返回,不用向外部查詢。
  2. 向本地/ISP DNS 服務器查詢
    • 如果本地沒有,電腦會向配置好的 DNS 服務器(通常是 ISP 提供的)發請求。
  3. 逐級查找域名(遞歸/迭代)
    如果 ISP DNS 也沒有緩存,會向上查詢:
    1. 根 DNS 服務器(Root):負責頂級域(比如 .com.org.cn)信息
    2. 頂級域(TLD)DNS 服務器:負責二級域名解析
    3. 權威 DNS(Authoritative DNS)服務器:最終返回域名對應的 IP
  4. 返回結果給本地 DNS,再到電腦
    • ISP DNS 緩存查詢結果,下次再查同樣域名就直接返回
    • 瀏覽器拿到 IP,就可以建立 TCP 連接訪問網站了

二、動態網站訪問流程(如 index.php

動態網站需要服務器先執行程序(如 PHP)生成頁面,再返回給瀏覽器。流程如下:

  1. 瀏覽器發起請求

    • 瀏覽器訪問 http://example.com/index.php
    • 先通過 DNS 查到服務器 IP
    • 再通過 TCP 建立連接到服務器端口(如 80/443)

    Web 服務器接收請求

    • Apache 或 Nginx 收到請求后,檢查請求的是 PHP 文件
    • 不是直接返回 HTML,而是交給 PHP 解析器(如 PHP-FPM)處理

    PHP 生成 HTML

    • PHP 腳本運行:處理業務邏輯、查詢數據庫、生成動態內容
    • 輸出最終 HTML

    Web 服務器發送響應

    • PHP 生成的 HTML 返回給 Web 服務器
    • Web 服務器再通過 TCP 連接,按照 HTTP 協議把響應發送給瀏覽器

    瀏覽器渲染頁面

    • 瀏覽器收到 HTML,解析、渲染,加載 CSS/JS/圖片,顯示頁面

特點:

  • 頁面內容可以動態生成(例如顯示不同用戶信息、數據庫內容)。
  • 每次訪問可能生成不同的 HTML。

核心理解:

  • Web 服務器負責監聽端口、接收請求、返回響應,處理 HTTP/TCP 層的通信。
  • PHP負責生成動態內容(HTML),只是 Web 服務器的一個“內容提供者”。
  • 瀏覽器最終接收到的是 HTML,底層仍是 TCP + HTTP 協議傳輸。

三.總結對比

3.1 靜態網站VS動態網站

特性靜態網站動態網站(PHP/Node/Python等)
頁面內容固定,提前寫好(HTML/CSS/JS)動態生成,根據請求或數據庫數據生成
URL 示例/index.html/index.php
請求處理Web 服務器直接返回文件Web 服務器交給應用程序(PHP/FPM/Node)生成頁面
服務器計算不需要,直接“送文件”需要,執行程序、處理邏輯、查詢數據庫
HTTP 響應直接返回靜態文件內容返回程序生成的 HTML 內容
TCP/HTTP 流程瀏覽器 → TCP → Web 服務器 → HTTP → 瀏覽器瀏覽器 → TCP → Web 服務器 → 調用 PHP → 生成 HTML → HTTP → 瀏覽器
特點簡單、高速、壓力小靈活、可定制、服務端壓力大
適用場景企業官網、博客、文檔站點電商網站、論壇、社交網站、需要動態內容的應用

3.2 SPA vs SSR

角度SPASSR
HTML 生成瀏覽器端服務器端
頁面內容動態(客戶端渲染)動態(服務器渲染)
服務器作用提供靜態資源 + API 數據生成 HTML + 提供 API 數據
類比傳統網站靜態入口 + 動態數據純動態網站

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96516.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96516.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96516.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【辦公自動化】如何使用Python腳本自動化處理音頻?

在日常辦公和內容創作中,音頻處理是一項常見需求。無論是處理會議錄音、制作播客、編輯音樂背景,還是進行語音識別,Python都能幫助我們高效地完成這些任務。本文將介紹如何使用Python實現音頻處理自動化,包括格式轉換、音頻拼接、…

OpenHarmony AVSession深度解析(二):從本地會話到分布式跨設備協同的完整生命周期管理

1. 系統概述 AVSession是OpenHarmony多媒體框架中的核心組件,負責管理音視頻會話的生命周期、狀態同步和跨設備協同。它提供了統一的接口供應用創建會話、設置元數據、控制播放狀態,并支持分布式場景下的會話遷移。 2. 架構設計 2.1 核心類結構 #mermaid-svg-QwwujBwB3Wo6…

架構思維:在復雜系統中尋找秩序的底層邏輯

在商業世界中,架構師常被視為神秘的存在。懂架構不一定是大師,但,大師一定善于架構,善于撥開迷霧,看透全局。他們穿梭于代碼與流程之間,用看不見的線條編織著數字世界的經緯。 架構天然的使命就是面對復雜…

國產凝思debian系Linux離線安裝rabbitmq教程步驟

系統環境 由于國內訪問debian的apt源太慢了,花了很多很多時間后,反而超時報錯。所以采用離線安裝方式。 uname -a Linux bogon 4.19.0-11-linx-security-amd64 #1 SMP Linx 4.19.146-1linx10 (2023-05-30) x86_64 GNU/Linux下載安裝包 在有網絡的電腦…

開發避坑指南(48):Java Stream 判斷List元素的屬性是否包含指定的值

需求 Java Stream 判斷List元素的屬性是否包含指定的值該怎么實現? 代碼實現 直接上代碼 public class OrderInfo {private BigDecimal fee;private String orderStatus; }public class ListTest2 {public static void main(String[] args) {OrderInfo orderInfo n…

Arbess V2.0.7版本發布,支持Docker/主機藍綠部署任務,支持Gradle構建、Agent運行策略

Arbess 是一款國產開源免費的 CI/CD 工具,產品開源免費,簡潔易用。本周Arbess V2.0.7版本發布,新增Docker/主機藍綠部署策略,Gradle構建任務,新增Agent執行策略。 1、版本更新日志 新增 ? 支持Docker藍綠部署、主機…

萬物皆可PID:深入理解控制算法在OpenBMC風扇調速中的應用

引言:智能散熱,不僅僅是“開”和“關” 想象一下服務器中的風扇管理。最簡單的策略是“bang-bang”控制(雙位控制):溫度超過閾值,風扇全速運轉;溫度低于閾值,風扇低速或停止。這種策…

CH347應用 USB轉I2C功能之:開源項目i2c-tools工具的使用(2)

目錄前言開源地址使用說明i2cdetecti2cdumpi2cset前言 上一篇博客中介紹了CH347配合i2c-tools在Linux下的使用,但我們能不能在Windows中也是用i2c-tools進行I2C設備的調試呢。這里我將i2cdetect、i2cdump、i2cset三個常用的工具移植至Windows平臺,并進行…

代碼隨想錄算法訓練營第50天 | 圖論理論基礎、深搜理論基礎、98. 所有可達路徑、廣搜理論基礎

圖論理論基礎 題目鏈接/文章講解:https://www.programmercarl.com/kamacoder/%E5%9B%BE%E8%AE%BA%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 了解圖的基本概念,連通性,圖的構造,圖的遍歷方式 深搜理論基礎 題目鏈接/文章講解&…

華為HCIE-云計算培訓課程有哪些?

華為HCIE云計算認證是華為公司推出的高級別認證,對于想要在云計算領域發展,提高專業技能和競爭力的人來說具備極高的價值。接下里就來聊聊華為HCIE云計算的培訓課程都有哪些?如何高效備考呢?一,HCIE云計算培訓課程1、理…

DCS控制回路優化:基于WebSocket的實時參數遠程調校方法論

說起來,我前段時間剛啃完一個化工廠DCS控制回路優化的硬骨頭,用WebSocket搞成了實時參數遠程調校,現在回想起來,滿是能跟大家嘮的實操經驗,說不定你們以后碰到類似情況,能少走些冤枉路。先跟大家交代下背景…

《JVM如何排查OOM》

目錄 一、什么是OOM? 二、OOM排查的整體思路 三、OOM排查工具大全 四、實戰:不同OOM場景的排查方法 場景1:Java heap space 場景2:Metaspace 場景3:GC overhead limit exceeded 五、高級排查技巧 1. 使用Arth…

ubuntu22.04 安裝Docker

一、更新系統包索引sudo apt update && sudo apt upgrade -y二、安裝必要依賴安裝 curl、gnupg等工具,用于添加 Docker 官方 GPG 密鑰和倉庫:sudo apt install -y ca-certificates curl gnupg三、添加 Docker 官方 GPG 密鑰sudo install -m 0755…

高低壓隔離器的技術演進與行業賦能

電力電子系統的安全架構與效率升級,始終依賴高低壓電路間的可靠隔離。高低壓隔離器作為能量傳輸與信號控制的核心媒介,通過持續迭代的絕緣技術與結構創新,為新能源裝備、工業驅動系統提供底層安全屏障。其阻斷電位差傳導、抑制電磁干擾的能力…

嵌入式 - ARM5

一、led點燈代碼優化1. 配置寄存器volatile1.??禁止優化??不對該變量的讀寫操作進行任何優化(如刪除“冗余”讀取或延遲寫入)。2.??強制內存訪問??每次訪問該變量時,必須直接從內存(或硬件寄存器)中讀取或寫入…

SSH登錄管理

兩種配置方法-密碼 -密鑰(免密)ansible 默認 rhel9 禁止 root 用密碼登陸,不禁止用密鑰登陸 ---修改方式----vim /etc/ssh/sshd_config 修改此文件#PermitRootLogin prohibit-passwordPermitRootLogin yes 改為允許systemctl res…

遠程連接--向日葵

下載安裝卸載 向日葵語言設置 點擊下面的圖標,點擊"設置": 問題解決 向日葵被連接之后自動黑屏 取消下面的勾選框: 向日葵連接之后黑屏 檢查系統的協議: echo $XDG_SESSION_TYPE 如果是: wayland 需要切換為x11. 設置永久默認使用 X11: sudo vi /etc/gdm3/custom…

Liunx執行source /etc/profile 報錯, -bash: HISTTIMEFORMAT: readonly variable

今天在配置java環境變量時,執行source /etc/profile報錯,系統是統信OS,花了好長時間才解決,在這記錄一下,希望能幫助到大家問題截圖提示HISTTIMEFORMAT和PROMPT_COMMAND變量時只讀變量,不能設置屬性值解決辦…

什么是達林頓管?

簡單來說,達林頓管是一個“電流放大器中的大力士”。它的核心目的是用非常小的輸入電流(基極電流)去控制一個非常大的輸出電流(集電極電流)。達林頓管是由兩個三極管串聯而成,放大倍數是兩個三極管的放大倍…

嵌入式Linux學習_rk3588移植無線網卡驅動

記錄移植無線網卡驅動遇到的各種問題: 從官網上下載8821的驅動源碼復制一份上面的CONFIG_PLATFORM_ARM_RK2818,改成3588,然后選項改成y,并把autodetect關掉。 找到CONFIG_PLATFORM_ARM_RK2818,復制一份,改成…