0Pricing
DevOps Bootcamp · บทเรียน

การแคชทรัพยากรที่ต้องพึ่งพาเพื่อเพิ่มความเร็ว

ใช้การแคชเพื่อเร่งการทำงานของเวิร์กโฟลว์อย่างมาก ด้วยการนำทรัพยากรที่สร้างขึ้นและผลลัพธ์การสร้างกลับมาใช้ซ้ำ

การแคชทรัพยากรที่ต้องพึ่งพาเพื่อเพิ่มความเร็ว เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 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) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การแคชทรัพยากรที่ต้องพึ่งพาเพื่อเพิ่มความเร็ว”

ใช้การแคชเพื่อเร่งการทำงานของเวิร์กโฟลว์อย่างมาก ด้วยการนำทรัพยากรที่สร้างขึ้นและผลลัพธ์การสร้างกลับมาใช้ซ้ำ คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การแคชทรัพยากรที่ต้องพึ่งพาเพื่อเพิ่มความเร็ว” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้างแบบเมทริกซ์สำหรับหลายสภาพแวดล้อม
  2. การแคชทรัพยากรที่ต้องพึ่งพาเพื่อเพิ่มความเร็ว
  3. เวิร์กโฟลว์และแอ็กชันที่นำกลับมาใช้ซ้ำได้
  4. การดำเนินการแบบมีเงื่อนไขและการพึ่งพาระหว่างงาน
← กลับไปที่ DevOps Bootcamp