การแคชทรัพยากรที่ต้องพึ่งพาเพื่อเพิ่มความเร็ว
ใช้การแคชเพื่อเร่งการทำงานของเวิร์กโฟลว์อย่างมาก ด้วยการนำทรัพยากรที่สร้างขึ้นและผลลัพธ์การสร้างกลับมาใช้ซ้ำ
การแคชทรัพยากรที่ต้องพึ่งพาเพื่อเพิ่มความเร็ว เป็นบทเรียน CI/CD with GitHub Actions & DevOps Pipelines ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CI/CD with GitHub Actions & DevOps Pipelines และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CI/CD with GitHub Actions & DevOps Pipelines มีบทเรียนทั้งหมด 4 บทเรียน
เพิ่มความเร็วเวิร์กโฟลว์ด้วยการแคช
คุณเคยสังเกตไหมว่าเวิร์กโฟลว์ดาวน์โหลดข้อพึ่งพาเดิมซ้ำทุกครั้ง ซึ่งทำให้การทำงานช้าลง!
การแคชใน GitHub Actions ช่วยให้คุณจัดเก็บและนำไฟล์จากการทำงานครั้งก่อนกลับมาใช้ใหม่ได้ วิธีนี้ช่วยเพิ่มความเร็วให้การเรียกใช้เวิร์กโฟลว์ครั้งถัดไปอย่างมาก
รู้จักแอ็กชันแคช
GitHub มีแอ็กชันพิเศษชื่อ actions/cache@v3 แอ็กชันนี้ออกแบบมาเพื่อบันทึกและกู้คืนไฟล์ ทำให้เวิร์กโฟลว์ของคุณทำงานได้เร็วขึ้น
แอ็กชันนี้ทำงานอย่างชาญฉลาด โดยตรวจสอบก่อนว่าแคชมีอยู่แล้วหรือไม่ก่อนพยายามกู้คืน และจะบันทึกแคชหากยังไม่มี
คีย์และเส้นทางของแคช
พารามิเตอร์สำคัญสองรายการของ actions/cache คือ key และ path:
key: สตริงเฉพาะที่ใช้ระบุแคชของคุณ หากพบแคชที่มีคีย์นี้ ระบบจะกู้คืนแคชดังกล่าวpath: เส้นทางไฟล์หรือไดเรกทอรีที่คุณต้องการแคช ซึ่งจะบอกแอ็กชันว่า *สิ่งใด* ที่ต้องบันทึกหรือกู้คืน
คีย์มักมีค่าแฮชของไฟล์ข้อพึ่งพา เพื่อให้แน่ใจว่าแคชจะถูกทำให้ใช้ไม่ได้เมื่อข้อพึ่งพาเปลี่ยนแปลง
การแคชข้อพึ่งพาของ Node.js
มาลองแคช node_modules สำหรับโครงการ Node.js กัน เราจะใช้ hashFiles เพื่อสร้างคีย์แบบไดนามิกที่อ้างอิงจาก package-lock.json
ลองเรียกใช้ข้อมูลโค้ดเวิร์กโฟลว์อย่างง่ายนี้:
name: Node.js CI with Cache
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache Node.js modules
uses: actions/cache@v3
with:
path: node_modules
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: |
npm-
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm testการสำรองด้วยคีย์กู้คืน
หาก key ที่ตรงกันทุกประการไม่ตรงกับแคชใดเลยจะเป็นอย่างไร คำสั่ง restore-keys จะมีประโยชน์ในกรณีนี้
restore-keys จะแสดงรายการคีย์สำรองสำหรับค้นหา หากไม่พบคีย์หลัก เช่น npm-${{ hashFiles(...) }} GitHub Actions จะพยายามค้นหาแคชโดยใช้ restore-keys ตามลำดับ
ในตัวอย่างของเรา npm- จะพยายามค้นหาแคชใด ๆ ที่ขึ้นต้นด้วย "npm-" ซึ่งมีประโยชน์เมื่อมีเพียงรุ่นของข้อพึ่งพาบางรายการที่เปลี่ยนแปลง
การแคชข้อพึ่งพาของ Python
การแคชไม่ได้มีไว้สำหรับ Node.js เท่านั้น! คุณสามารถใช้หลักการเดียวกันกับภาษาอื่น เช่น Python ได้ ในที่นี้ เราจะแคชสภาพแวดล้อมเสมือนของ Python และแคชของ pip
คีย์ในที่นี้ใช้ hashFiles('requirements.txt') และเส้นทางจะชี้ไปยังสภาพแวดล้อมเสมือนกับไดเรกทอรีแคชของ pip
name: Python CI with Cache
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Cache Python dependencies
uses: actions/cache@v3
with:
path: |
~/.cache/pip
.venv
key: pip-${{ hashFiles('requirements.txt') }}
restore-keys: |
pip-
- name: Install dependencies
run: |
python -m venv .venv
.venv/bin/pip install -r requirements.txt
- name: Run tests
run: .venv/bin/python -m unittest discoverเมื่อใดควรทำให้แคชใช้ไม่ได้
แคชจะมีประโยชน์ก็ต่อเมื่อข้อมูลยังใหม่เพียงพอ หากข้อพึ่งพาของคุณเปลี่ยนแปลง แคชก็ควรเปลี่ยนแปลงเช่นกัน
แคชจะถูกทำให้ใช้ไม่ได้โดยอัตโนมัติหาก key หลักของคุณ เช่น npm-${{ hashFiles('package-lock.json') }} เปลี่ยนแปลง หาก package-lock.json ได้รับการอัปเดต ค่าแฮชจะเปลี่ยนแปลงและระบบจะสร้างแคชใหม่
คุณยังสามารถบังคับสร้างแคชใหม่ได้โดยเปลี่ยนคีย์ด้วยตนเอง เช่น เพิ่มส่วนต่อท้ายรุ่นอย่าง npm-v2-${{ hashFiles(...) }}
ขอบเขตและข้อจำกัดของแคช
การทำความเข้าใจการทำงานของแคชเบื้องหลังก็เป็นเรื่องที่ดี:
- ขอบเขต: แคชมีขอบเขตแยกตามที่เก็บโค้ดและสาขา แคชในสาขา
mainจะไม่ถูกใช้ในสาขาฟีเจอร์ เว้นแต่คุณจะกำหนดค่าlookup-pathไว้อย่างชัดเจน - ขีดจำกัดขนาด: แคชแต่ละรายการมีขนาดได้สูงสุด 10GB
- ระยะเวลาเก็บรักษา: แคชจะถูกเก็บไว้เป็นเวลา 7 วันหลังจากการเข้าถึงครั้งล่าสุด แคชเก่าที่ไม่ได้ใช้งานจะถูกลบโดยอัตโนมัติ
แนวทางการแคชอย่างชาญฉลาด
เพื่อใช้ประโยชน์จากการแคชให้ได้มากที่สุด:
- ใช้
hashFiles: เชื่อมโยงคีย์แคชกับไฟล์รายการข้อพึ่งพาเสมอ เช่นpackage-lock.jsonและrequirements.txt - ระบุ
pathให้ชัดเจน: แคชเฉพาะสิ่งที่จำเป็น เช่นnode_modulesและ~/.cache/pip - ใช้
restore-keys: ระบุคีย์สำรองเพื่อเพิ่มอัตราการพบแคช - หลีกเลี่ยงการแคชข้อมูลที่เปลี่ยนแปลงบ่อย: อย่าแคชไฟล์ที่เปลี่ยนแปลงบ่อยหรือมีขนาดใหญ่มากและไม่ซ้ำกันในแต่ละการทำงาน เช่น ผลลัพธ์การสร้างที่มีไว้สำหรับการนำไปใช้งานจริง
โจทย์ท้าทายเรื่องคีย์แคช
คุณมีโครงการ Java ที่ใช้ Maven โดยกำหนดข้อพึ่งพาไว้ใน pom.xml และโดยทั่วไป Maven จะจัดเก็บไฟล์ JAR ที่ดาวน์โหลดไว้ใน ~/.m2/repository
การกำหนดค่าแคชแบบใดช่วยให้มั่นใจได้ดีที่สุดว่าข้อพึ่งพาของ Maven จะถูกแคชและทำให้แคชใช้ไม่ได้อย่างถูกต้องเมื่อ pom.xml เปลี่ยนแปลง
ทบทวน: แคชเพื่อความเร็ว
ทำได้ดีมาก! คุณได้เรียนรู้วิธีใช้การแคชใน GitHub Actions เพื่อเพิ่มความเร็วให้เวิร์กโฟลว์ CI/CD ได้อย่างมากแล้ว
- แอ็กชัน
actions/cacheคือเครื่องมือของคุณ - ใช้
keyและpathเพื่อกำหนดว่าจะนำสิ่งใดมาแคชและจะแคชอย่างไร hashFilesสร้างคีย์แบบไดนามิกเพื่อทำให้แคชใช้ไม่ได้อย่างชาญฉลาดrestore-keysช่วยจัดเตรียมคีย์สำรองที่มีประโยชน์
การแคชข้อพึ่งพาอย่างชาญฉลาดช่วยประหยัดเวลาในการสร้างและทรัพยากรการประมวลผล ทำให้ไปป์ไลน์ของคุณมีประสิทธิภาพมากขึ้น
คำถามที่พบบ่อย
บทเรียน “การแคชทรัพยากรที่ต้องพึ่งพาเพื่อเพิ่มความเร็ว” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การแคชทรัพยากรที่ต้องพึ่งพาเพื่อเพิ่มความเร็ว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CI/CD with GitHub Actions & DevOps Pipelines ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CI/CD with GitHub Actions & DevOps Pipelines มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การแคชทรัพยากรที่ต้องพึ่งพาเพื่อเพิ่มความเร็ว”
ใช้การแคชเพื่อเร่งการทำงานของเวิร์กโฟลว์อย่างมาก ด้วยการนำทรัพยากรที่สร้างขึ้นและผลลัพธ์การสร้างกลับมาใช้ซ้ำ คุณปฏิบัติ CI/CD with GitHub Actions & DevOps Pipelines ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CI/CD with GitHub Actions & DevOps Pipelines หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน CI/CD with GitHub Actions & DevOps Pipelines บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การแคชทรัพยากรที่ต้องพึ่งพาเพื่อเพิ่มความเร็ว” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน CI/CD with GitHub Actions & DevOps Pipelines นี้ได้ไหม
ได้ บทเรียน CI/CD with GitHub Actions & DevOps Pipelines ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างแบบเมทริกซ์สำหรับหลายสภาพแวดล้อม
- การแคชทรัพยากรที่ต้องพึ่งพาเพื่อเพิ่มความเร็ว
- เวิร์กโฟลว์และแอ็กชันที่นำกลับมาใช้ซ้ำได้
- การดำเนินการแบบมีเงื่อนไขและการพึ่งพาระหว่างงาน