> [!NOTE]
> 此 README 由 [SKILL](https://github.com/agenvoy/skill-readme-generate) 生成，英文版請參閱 [這裡](https://github.com/pardnio/node-image-server/blob/master/README.md)。

***

<p align="center">
<strong>RESIZE ONCE, SERVE FROM CACHE EVERYWHERE!</strong>
</p>

<p align="center">
<a href="https://github.com/pardnio/node-image-server/releases"><img src="https://img.shields.io/github/v/tag/pardnio/node-image-server?include_prereleases&style=for-the-badge" alt="Version"></a>
<a href="https://github.com/pardnio/node-image-server/blob/master/LICENSE"><img src="https://img.shields.io/github/license/pardnio/node-image-server?include_prereleases&style=for-the-badge" alt="License"></a>
</p>

***

> Node.js 圖片伺服器，具備即時轉 WebP 縮圖、Nginx 與 CDN 快取與依日期歸檔的垃圾桶

## 目錄

- [功能特點](#功能特點)
- [架構](#架構)
- [授權](#授權)
- [Author](#author)

## 功能特點

> `docker compose up -d` · [完整文件](https://github.com/pardnio/node-image-server/blob/master/doc/doc.zh.md)

- **四層快取** — 瀏覽器、Cloudflare Worker、Nginx `proxy_cache` 與磁碟快取檔逐層攔截，同一張圖只需處理一次。
- **即時轉檔縮圖** — 以網址參數指定尺寸、品質與格式（WebP／AVIF／JPG／PNG），預設輸出 WebP 並將過大圖片縮至長邊 1024px。
- **參數化快取版本** — 每組尺寸與品質參數各自產生獨立快取檔，Worker 也以 query string 作為快取鍵，不同版本互不覆蓋。
- **依日期歸檔的垃圾桶** — 刪除不直接移除檔案，而是搬進 `.trash/YYYY-MM-DD/` 並回傳位置，可依刪除日期快速還原。
- **一鍵容器化部署** — Docker Compose 同時啟動 Nginx 與 PM2 管理的 Node.js cluster，worker 異常退出自動補位。

## 架構

> [完整架構](https://github.com/pardnio/node-image-server/blob/master/doc/architecture.zh.md)

```mermaid
graph TB
    Client[用戶端] --> Worker[Cloudflare Worker<br>CDN 快取]
    Client --> Nginx[Nginx<br>proxy_cache]
    Worker --> Nginx
    Nginx --> App[Express Cluster]
    App --> GET[GET /c/img<br>sharp 轉檔]
    App --> POST[POST /upload]
    App --> DEL[DELETE /del]
    GET --> Storage[(storage/image<br>upload · cache)]
    POST --> Storage
    DEL --> Trash[(upload/.trash)]
```

## 授權

本專案採用 [MIT LICENSE](https://github.com/pardnio/node-image-server/blob/master/LICENSE)。

## Author

Just [open an issue](https://github.com/pardnio/node-image-server/issues/new) to share an idea.

<a href="https://github.com/pardnio/node-image-server/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=pardnio/node-image-server&cache_bust=2026-10-07" alt="node-image-server contributors" />
</a>

***

©️ 2025 [邱敬幃 Pardn Chiu](https://www.linkedin.com/in/pardnchiu)
