文章

具體說明 HTTP 標頭(header) ETag 是如何運作的

談到瀏覽器的快取,最眾所皆知的是 Cache-Control 。

但其實還有 1 個也經常被提到,那就是 ETag 。

可真要解釋 ETag 具體在做什麼、是如何運作的,以及為什麼需要 ETag, 卻又很難講得清楚(偏偏面試又會被問)。

本文將從實際的範例出發,帶你徹底了解 ETag 並提供 Python 程式碼,讓你在家也能玩!

Posted on  Jun 9, 2024  in  HTTP headers  by  Amo Chen  ‐ 5 min read

Python 模組教學 - selectors

Python 是 1 個追求易用、易學、 battery included 的程式語言, Python 有一些模組會把既有的模組包裝成高階(high-level)模組,除了更易於使用之外,因為一些實作細節或最佳實務也都幫忙打點好了,所以能讓開發者寫出更優雅、簡潔的程式碼。

本文將介紹 selectors 模組,該模組是基於 select 模組的高階模組,也是做 I/O 多工會使用的模組。

Posted on  Jun 5, 2024  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 5 min read

理解 Python 後端技術: ASGI (Asynchronous Server Gateway Interface) — WSGI 的繼承者

大家或多或少應該都聽過近年來熱門的 Python 框架 FastAPI,它其中一個特點是支援 WebSocket 。

WebSocket 與 HTTP 的不同之處在於, HTTP 是單次要求單次回應的協定,而 WebSocket 是 1 種長期連線技術,允許多次的客戶端與伺服器端互動事件發生,這意味著應用需要能夠處理持續的雙向通訊,而不僅僅是處理單一的要求和回應。

談到這裡,不知道你是否會好奇為什麼 FastAPI 能夠同時支援這 2 種截然不同的協定?

這一切都與 ASGI 脫不了關係!

本文將介紹 ASGI (Asynchronous Server Gateway Interface) ,這個被稱為 WSGI 繼承者(successor)的規範,以及 ASGI 如何賦予 FastAPI 同時支援 HTTP 與 WebSocket 的能力。

Posted on  Jun 2, 2024  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 10 min read

理解 Python 後端技術:從 CGI 談到 WSGI, uWSGI 與 uwsgi

開發 Flask, Django 等後端應用時,最後一定會遇到部署的問題,這些框架多半告訴我們要使用 WSGI HTTP server 部署,例如 gunicorn, uWSGI 等等都是一時之選。

但你有想過為什麼要使用 WSGI HTTP server 嗎?你理解什麼是 WSGI 嗎?跟 uWSGI 之間又有什麼差異?(這些其實也是面試 Python 後端工程師時常見的問題)

本文將從 CGI 開始,一路認識 WSGI, uWSGI 以及 uwsgi, 把各種常見的問題都釐清!

Posted on  May 29, 2024  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 9 min read

談 HTTP 標頭(header) Vary 的作用

HTTP header “Vary” 是 1 個很重要的 Header, 它之所以重要,是因為 Vary 會對內容傳遞網路(CDN), 代理伺服器(Proxy)以及瀏覽器等有作用產生。 p.s. 而且用得不好就可能

Posted on  May 23, 2024  in  HTTP headers  by  Amo Chen  ‐ 4 min read

用 Python 學網路程式設計重要概念 — 從單執行緒到 I/O 多工(I/O multiplexing)

在學習網路程式設計時,每個人都遇過怎麼讓 sever 可以盡可能地處理更多連線的課題,要達到這個目的,多數人直覺應該會想到運用多執行緒、多 processes 的架構,為每個連線建立 1 個新的執行緒或 process 處理,但是這種方法在處理大量連線時,就顯得捉襟見肘,單就多執行緒的解決方案來說,隨著連線數上升,首先就會遇到 CPU context switch 所造成的效能問題,更遑論多 processes 架構會需要使用比多執行緒架構更多資源的問題。

但現代有很多應用僅用單執行緒就能夠處理龐大的連線數,包含 Nginx, Redis 等知名開源軟體,這些軟體是怎麼做到的呢?這就需要談到 1 種稱為 I/O multiplexing 的技術!

本文將教導 1 種稱為 I/O multiplexing 的技術,該技術能夠讓單執行緒處理多個連線,將效能壓榨出來!

p.s. 這個技術還可以與多執行緒、多 processes 架構混用

Posted on  May 12, 2024  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 15 min read