You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/tl/5-browser-extension/3-background-tasks-and-perf...
softchris 84e6dc3258
🌐 Update translations via Co-op Translator
4 weeks ago
..
README.md 🌐 Update translations via Co-op Translator 4 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 1 month ago

README.md

Proyekto ng Browser Extension Bahagi 3: Alamin ang Tungkol sa Background Tasks at Performance

journey
    title Your Performance Optimization Journey
    section Foundation
      Learn browser tools: 3: Student
      Understand profiling: 4: Student
      Identify bottlenecks: 4: Student
    section Extension Features
      Build color system: 4: Student
      Create background tasks: 5: Student
      Update icons dynamically: 5: Student
    section Optimization
      Monitor performance: 5: Student
      Debug issues: 4: Student
      Polish experience: 5: Student

Naisip mo na ba kung bakit ang ilang browser extensions ay mabilis at tumutugon habang ang iba ay tila mabagal? Ang sikreto ay nasa likod ng mga eksena. Habang nagki-click ang mga user sa interface ng iyong extension, may isang mundo ng mga background process na tahimik na nagma-manage ng pagkuha ng data, pag-update ng mga icon, at mga system resources.

Ito ang huling aralin natin sa serye ng browser extension, at gagawin nating maayos ang takbo ng iyong carbon footprint tracker. Magdadagdag ka ng mga dynamic na pag-update ng icon at matututo kung paano matukoy ang mga isyu sa performance bago pa ito maging problema. Para itong pag-tune ng race car - ang maliliit na pag-optimize ay maaaring magdulot ng malaking pagbabago sa takbo ng lahat.

Kapag natapos na tayo, magkakaroon ka ng isang pulidong extension at maiintindihan mo ang mga prinsipyo ng performance na nagtatangi sa magagandang web apps mula sa mga mahusay na web apps. Halina't sumisid sa mundo ng browser optimization.

Pre-Lecture Quiz

Pre-lecture quiz

Panimula

Sa mga nakaraang aralin, gumawa ka ng form, ikinonekta ito sa isang API, at hinarap ang asynchronous na pagkuha ng data. Maganda na ang hugis ng iyong extension.

Ngayon, kailangan nating idagdag ang mga huling detalye - tulad ng pagpapalit ng kulay ng icon ng extension base sa carbon data. Parang kung paano kailangang i-optimize ng NASA ang bawat sistema sa Apollo spacecraft. Hindi sila maaaring mag-aksaya ng kahit anong cycle o memorya dahil buhay ang nakasalalay sa performance. Bagamat hindi kasing kritikal ang ating browser extension, pareho pa rin ang mga prinsipyo - ang mahusay na code ay lumilikha ng mas magagandang karanasan para sa user.

mindmap
  root((Performance & Background Tasks))
    Browser Performance
      Rendering Pipeline
      Asset Optimization
      DOM Manipulation
      JavaScript Execution
    Profiling Tools
      Developer Tools
      Performance Tab
      Timeline Analysis
      Bottleneck Detection
    Extension Architecture
      Background Scripts
      Content Scripts
      Message Passing
      Icon Management
    Optimization Strategies
      Code Splitting
      Lazy Loading
      Caching
      Resource Compression
    Visual Feedback
      Dynamic Icons
      Color Coding
      Real-time Updates
      User Experience

Mga Pangunahing Kaalaman sa Web Performance

Kapag ang iyong code ay tumatakbo nang mahusay, mararamdaman talaga ito ng mga tao. Alam mo ba ang pakiramdam kapag ang isang pahina ay agad na naglo-load o ang animation ay maayos na gumagalaw? Iyan ang magandang performance sa trabaho.

Ang performance ay hindi lang tungkol sa bilis - ito ay tungkol sa paggawa ng mga web experience na natural ang pakiramdam sa halip na mabagal at nakakainis. Noong unang panahon ng computing, si Grace Hopper ay kilalang may nanosecond (isang piraso ng kawad na humigit-kumulang isang talampakan ang haba) sa kanyang mesa upang ipakita kung gaano kalayo ang nararating ng liwanag sa isang bilyong bahagi ng isang segundo. Ito ang paraan niya ng pagpapaliwanag kung bakit mahalaga ang bawat microsecond sa computing. Tuklasin natin ang mga tool na tumutulong sa iyong matukoy kung ano ang nagpapabagal sa mga bagay.

"Ang performance ng website ay tungkol sa dalawang bagay: kung gaano kabilis mag-load ang pahina, at kung gaano kabilis tumakbo ang code nito." -- Zack Grossbart

Ang paksa ng kung paano gawing napakabilis ang iyong mga website sa lahat ng uri ng device, para sa lahat ng uri ng user, sa lahat ng uri ng sitwasyon, ay hindi nakakagulat na malawak. Narito ang ilang mga punto na dapat tandaan habang bumubuo ka ng isang karaniwang web project o browser extension.

Ang unang hakbang sa pag-optimize ng iyong site ay ang pag-unawa sa kung ano talaga ang nangyayari sa likod ng eksena. Sa kabutihang-palad, ang iyong browser ay may makapangyarihang mga tool na pang-detect na naka-built in.

flowchart LR
    A[HTML] --> B[Parse]
    B --> C[DOM Tree]
    D[CSS] --> E[Parse]
    E --> F[CSSOM]
    G[JavaScript] --> H[Execute]
    
    C --> I[Render Tree]
    F --> I
    H --> I
    
    I --> J[Layout]
    J --> K[Paint]
    K --> L[Composite]
    L --> M[Display]
    
    subgraph "Critical Rendering Path"
        N["1. Parse HTML"]
        O["2. Parse CSS"]
        P["3. Execute JS"]
        Q["4. Build Render Tree"]
        R["5. Layout Elements"]
        S["6. Paint Pixels"]
        T["7. Composite Layers"]
    end
    
    style M fill:#e8f5e8
    style I fill:#fff3e0
    style H fill:#ffebee

Upang buksan ang Developer Tools sa Edge, i-click ang tatlong tuldok sa kanang itaas, pagkatapos pumunta sa More Tools > Developer Tools. O gamitin ang keyboard shortcut: Ctrl + Shift + I sa Windows o Option + Command + I sa Mac. Kapag naroon ka na, i-click ang Performance tab - dito mo gagawin ang iyong imbestigasyon.

Narito ang iyong toolkit para sa performance detective:

  • Buksan ang Developer Tools (palagi mo itong gagamitin bilang developer!)
  • Pumunta sa Performance tab - isipin ito bilang fitness tracker ng iyong web app
  • I-click ang Record button at panoorin ang iyong pahina sa aksyon
  • Pag-aralan ang mga resulta upang matukoy kung ano ang nagpapabagal sa mga bagay

Subukan natin ito. Buksan ang isang website (Microsoft.com ay maganda para dito) at i-click ang 'Record' button. Ngayon i-refresh ang pahina at panoorin ang profiler na kinukuha ang lahat ng nangyayari. Kapag tumigil ka sa pag-record, makikita mo ang detalyadong breakdown kung paano 'scripts', 'renders', at 'paints' ng browser ang site. Parang kung paano mino-monitor ng mission control ang bawat sistema sa panahon ng paglulunsad ng rocket - makakakuha ka ng real-time na data sa eksaktong nangyayari at kailan.

Edge profiler

Ang Microsoft Documentation ay may maraming detalye kung nais mong mas malalim na pag-aralan.

Pro tip: I-clear ang cache ng iyong browser bago mag-test upang makita kung paano gumagana ang iyong site para sa mga unang beses na bisita - kadalasang iba ito sa mga paulit-ulit na pagbisita!

Piliin ang mga elemento ng profile timeline upang mag-zoom in sa mga event na nangyayari habang naglo-load ang iyong pahina.

Kumuha ng snapshot ng performance ng iyong pahina sa pamamagitan ng pagpili ng bahagi ng profile timeline at pagtingin sa summary pane:

Edge profiler snapshot

Suriin ang Event Log pane upang makita kung may anumang event na tumagal ng higit sa 15 ms:

Edge event log

Kilalanin ang iyong profiler! Buksan ang developer tools sa site na ito at tingnan kung may mga bottleneck. Ano ang pinakamabagal na naglo-load na asset? Ang pinakamabilis?

flowchart TD
    A[Open DevTools] --> B[Navigate to Performance Tab]
    B --> C[Click Record Button]
    C --> D[Perform Actions]
    D --> E[Stop Recording]
    E --> F{Analyze Results}
    
    F --> G[Check Timeline]
    F --> H[Review Network]
    F --> I[Examine Scripts]
    F --> J[Identify Paint Events]
    
    G --> K{Long Tasks?}
    H --> L{Large Assets?}
    I --> M{Render Blocking?}
    J --> N{Expensive Paints?}
    
    K -->|Yes| O[Optimize JavaScript]
    L -->|Yes| P[Compress Assets]
    M -->|Yes| Q[Add Async/Defer]
    N -->|Yes| R[Simplify Styles]
    
    O --> S[Test Again]
    P --> S
    Q --> S
    R --> S
    
    style A fill:#e1f5fe
    style F fill:#fff3e0
    style S fill:#e8f5e8

Ano ang Dapat Hanapin Kapag Nagpo-profile

Ang pagtakbo ng profiler ay simula pa lamang - ang tunay na kasanayan ay ang pag-alam kung ano ang sinasabi ng mga makukulay na chart na iyon. Huwag mag-alala, makukuha mo ang kasanayan sa pagbabasa nito. Ang mga bihasang developer ay natututo kung paano makita ang mga babala bago ito maging ganap na problema.

Pag-usapan natin ang mga karaniwang salarin - ang mga problema sa performance na madalas sumingit sa mga web project. Parang kung paano kailangang maingat na i-monitor ni Marie Curie ang radiation levels sa kanyang lab, kailangan nating bantayan ang ilang pattern na nagpapahiwatig ng paparating na problema. Ang maagang pagtukoy sa mga ito ay makakatipid sa iyo (at sa iyong mga user) ng maraming frustration.

Mga laki ng asset: Ang mga website ay nagiging "mas mabigat" sa paglipas ng mga taon, at karamihan sa dagdag na timbang na ito ay mula sa mga imahe. Parang naglalagay tayo ng mas marami sa ating digital na maleta.

Tingnan ang Internet Archive upang makita kung paano lumaki ang mga laki ng pahina sa paglipas ng panahon - ito ay talagang nakakagulat.

Narito kung paano panatilihing optimized ang iyong mga asset:

  • I-compress ang mga imahe! Ang mga modernong format tulad ng WebP ay maaaring magbawas ng laki ng file nang malaki
  • I-serve ang tamang laki ng imahe para sa bawat device - walang pangangailangan na magpadala ng malalaking desktop images sa mga telepono
  • I-minify ang iyong CSS at JavaScript - bawat byte ay mahalaga
  • Gamitin ang lazy loading upang ang mga imahe ay mag-download lamang kapag talagang na-scroll ng mga user

DOM traversals: Kailangang buuin ng browser ang Document Object Model base sa code na isinulat mo, kaya't mahalaga para sa magandang performance ng pahina na panatilihing minimal ang iyong mga tag, gamit lamang ang kailangan ng pahina.

Mga pangunahing estratehiya para sa DOM optimization:

  • Minimizes ang bilang ng mga HTML elements at nesting levels
  • Removes ang mga hindi nagagamit na CSS rules at pinagsasama-sama ang mga stylesheet nang mahusay
  • Organizes ang CSS upang mag-load lamang ng kailangan para sa bawat pahina
  • Structures ang HTML nang semantiko para sa mas mahusay na parsing ng browser

JavaScript: Ang bawat JavaScript developer ay dapat magbantay para sa 'render-blocking' scripts na kailangang ma-load bago ma-traverse at ma-paint ang natitirang DOM sa browser. Isaalang-alang ang paggamit ng defer sa iyong inline scripts (tulad ng ginawa sa Terrarium module).

Mga modernong teknik sa pag-optimize ng JavaScript:

  • Uses ang defer attribute upang ma-load ang mga script pagkatapos ng DOM parsing
  • Implements ang code splitting upang ma-load lamang ang kinakailangang JavaScript
  • Applies ang lazy loading para sa mga non-critical functionality
  • Minimizes ang paggamit ng mabibigat na libraries at frameworks kung maaari

Subukan ang ilang mga site sa isang Site Speed Test website upang matuto pa tungkol sa mga karaniwang pagsusuri na ginagawa upang matukoy ang performance ng site.

🔄 Pedagogical Check-in

Pag-unawa sa Performance: Bago magtayo ng mga feature ng extension, tiyakin na kaya mong:

  • Ipaliwanag ang critical rendering path mula HTML hanggang pixels
  • Tukuyin ang mga karaniwang bottleneck sa performance ng web applications
  • Gamitin ang browser developer tools upang i-profile ang performance ng pahina
  • Maunawaan kung paano nakakaapekto ang laki ng asset at komplikasyon ng DOM sa bilis

Mabilis na Self-Test: Ano ang nangyayari kapag mayroon kang render-blocking JavaScript? Sagot: Kailangang i-download at i-execute ng browser ang script bago ito magpatuloy sa pag-parse ng HTML at pag-render ng pahina

Epekto ng Performance sa Tunay na Mundo:

  • 100ms delay: Napapansin ng mga user ang pagbagal
  • 1 segundo delay: Nagsisimulang mawalan ng focus ang mga user
  • 3+ segundo: 40% ng mga user ay iniiwan ang pahina
  • Mobile networks: Mas mahalaga ang performance

Ngayon na mayroon kang ideya kung paano nire-render ng browser ang mga asset na ipinapadala mo rito, tingnan natin ang huling mga bagay na kailangan mong gawin upang makumpleto ang iyong extension:

Gumawa ng function upang kalkulahin ang kulay

Ngayon gagawa tayo ng function na magpapalit ng numerical data sa makabuluhang mga kulay. Isipin ito na parang sistema ng traffic light - berde para sa malinis na enerhiya, pula para sa mataas na carbon intensity.

Ang function na ito ay kukuha ng CO2 data mula sa ating API at tutukuyin kung anong kulay ang pinakamahusay na kumakatawan sa epekto sa kapaligiran. Katulad ito ng kung paano ginagamit ng mga siyentipiko ang color-coding sa heat maps upang maipakita ang mga kumplikadong pattern ng data - mula sa temperatura ng karagatan hanggang sa pagbuo ng bituin. Idagdag natin ito sa /src/index.js, pagkatapos ng mga const variables na na-set up natin kanina:

flowchart LR
    A[CO2 Value] --> B[Find Closest Scale Point]
    B --> C[Get Scale Index]
    C --> D[Map to Color]
    D --> E[Send to Background]
    
    subgraph "Color Scale"
        F["0-150: Green (Clean)"]
        G["150-600: Yellow (Moderate)"]
        H["600-750: Orange (High)"]
        I["750+: Brown (Very High)"]
    end
    
    subgraph "Message Passing"
        J[Content Script]
        K[chrome.runtime.sendMessage]
        L[Background Script]
        M[Icon Update]
    end
    
    style A fill:#e1f5fe
    style D fill:#e8f5e8
    style E fill:#fff3e0
function calculateColor(value) {
	// Define CO2 intensity scale (grams per kWh)
	const co2Scale = [0, 150, 600, 750, 800];
	// Corresponding colors from green (clean) to dark brown (high carbon)
	const colors = ['#2AA364', '#F5EB4D', '#9E4229', '#381D02', '#381D02'];

	// Find the closest scale value to our input
	const closestNum = co2Scale.sort((a, b) => {
		return Math.abs(a - value) - Math.abs(b - value);
	})[0];
	
	console.log(`${value} is closest to ${closestNum}`);
	
	// Find the index for color mapping
	const num = (element) => element > closestNum;
	const scaleIndex = co2Scale.findIndex(num);

	const closestColor = colors[scaleIndex];
	console.log(scaleIndex, closestColor);

	// Send color update message to background script
	chrome.runtime.sendMessage({ action: 'updateIcon', value: { color: closestColor } });
}

I-breakdown natin ang matalinong maliit na function na ito:

  • Nagse-set up ng dalawang arrays - isa para sa CO2 levels, isa pa para sa mga kulay (berde = malinis, kayumanggi = marumi!)
  • Hinahanap ang pinakamalapit na tugma sa ating aktwal na CO2 value gamit ang ilang magaling na array sorting
  • Kinukuha ang matching color gamit ang findIndex() method
  • Nagpapadala ng mensahe sa background script ng Chrome gamit ang napiling kulay
  • Gumagamit ng template literals (ang mga backticks) para sa mas malinis na string formatting
  • Pinapanatili ang lahat ng maayos gamit ang const declarations

Ang chrome.runtime API ay parang nervous system ng iyong extension - ito ang humahawak sa lahat ng komunikasyon at gawain sa likod ng eksena:

"Gamitin ang chrome.runtime API upang makuha ang background page, magbalik ng mga detalye tungkol sa manifest, at makinig at tumugon sa mga event sa lifecycle ng app o extension. Maaari mo ring gamitin ang API na ito upang i-convert ang relative path ng mga URL sa fully-qualified URLs."

Bakit kapaki-pakinabang ang Chrome Runtime API:

  • Pinapayagan ang iba't ibang bahagi ng iyong extension na makipag-usap sa isa't isa
  • Humahawak ng mga background na gawain nang hindi nagha-hang ang user interface
  • Nagma-manage ng mga lifecycle events ng iyong extension
  • Ginagawang madali ang pagpapasa ng mensahe sa pagitan ng mga script

Kung ikaw ay nagde-develop ng browser extension na ito para sa Edge, maaaring magulat ka na ginagamit mo ang chrome API. Ang mga mas bagong bersyon ng Edge browser ay tumatakbo sa Chromium browser engine, kaya maaari mong gamitin ang mga tool na ito.

architecture-beta
    group browser(logos:chrome)[Browser]
    
    service popup(logos:html5)[Popup UI] in browser
    service content(logos:javascript)[Content Script] in browser
    service background(database)[Background Script] in browser
    service api(logos:api)[External API] in browser
    
    popup:R -- L:content
    content:R -- L:background
    background:T -- B:api
    content:T -- B:api
    
    junction junctionCenter in browser
    popup:R -- L:junctionCenter
    junctionCenter:R -- L:background

Pro Tip: Kung nais mong i-profile ang isang browser extension, buksan ang dev tools mula sa loob ng extension mismo, dahil ito ay isang hiwalay na browser instance. Bibigyan ka nito ng access sa mga extension-specific performance metrics.

Mag-set ng default na kulay ng icon

Bago tayo magsimulang kumuha ng totoong data, bigyan natin ang ating extension ng panimulang punto. Walang may gusto ng blangkong icon o mukhang sira. Magsisimula tayo sa kulay berde upang malaman ng mga user na gumagana ang extension mula sa sandaling ito ay kanilang mai-install.

Sa iyong init() function, mag-set tayo ng default na berde na icon:

chrome.runtime.sendMessage({
	action: 'updateIcon',
	value: {
		color: 'green',
	},
});

Ano ang nagagawa ng initialization na ito:

  • Nagse-set ng neutral na berde na kulay bilang default na estado
  • Nagbibigay ng agarang visual na feedback kapag nag-load ang extension
  • Nagtatatag ng pattern ng komunikasyon sa background script
  • Tinitiyak na makikita ng mga user ang functional na extension bago mag-load ang data

Tawagin ang function, i-execute ang tawag

Ngayon, ikonekta natin ang lahat upang kapag dumating ang sariwang CO2 data, ang iyong icon ay awtomatikong mag-update gamit ang tamang kulay. Parang pag-konekta sa huling circuit sa isang electronic device - biglang gumagana ang lahat ng indibidwal na bahagi bilang isang sistema.

Idagdag ang linyang ito pagkatapos mong makuha ang CO2 data mula sa API:

// After retrieving CO2 data from the API
// let CO2 = data.data[0].intensity.actual;
calculateColor(CO2);

Ang integration na ito ay nagagawa:

  • Kinokonekta ang daloy ng API data sa sistema ng visual indicator
  • Nagti-trigger ng mga pag-update ng icon nang awtomatiko kapag dumating ang bagong data
  • Tinitiyak ang real-time na visual feedback base sa kasalukuyang carbon intensity
  • Pinapanatili ang paghihiwalay ng mga alalahanin sa pagitan ng pagkuha ng data at display logic

At sa wakas, sa /dist/background.js, idagdag ang listener para sa mga tawag sa background action:

// Listen for messages from the content script
chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
	if (msg.action === 'updateIcon') {
		chrome.action.setIcon({ imageData: drawIcon(msg.value) });
	}
});

// Draw dynamic icon using Canvas API
// Borrowed from energy lollipop extension - nice feature!
function drawIcon(value) {
	// Create an offscreen canvas for better performance
	const canvas = new OffscreenCanvas(200, 200);
	const context = canvas.getContext('2d');

	// Draw a colored circle representing carbon intensity
	context.beginPath();
	context.fillStyle = value.color;
	context.arc(100, 100, 50, 0, 2 * Math.PI);
	context.fill();

	// Return the image data for the browser icon
	return context.getImageData(50, 50, 100, 100);
}

Narito ang ginagawa ng background script na ito:

  • Nakikinig sa mga mensahe mula sa iyong main script (parang receptionist na tumatanggap ng tawag)
  • Pinoproseso ang mga 'updateIcon' requests upang baguhin ang toolbar icon
  • Lumilikha ng mga bagong icon gamit ang Canvas API
  • Nagdo-drawing ng simpleng colored circle na nagpapakita ng kasalukuyang carbon intensity
  • Ina-update ang toolbar ng browser gamit ang sariwang icon
  • Gumagamit ng OffscreenCanvas para sa maayos na performance (walang UI blocking)

Matututo ka pa tungkol sa Canvas API sa Space Game lessons.

sequenceDiagram
    participant CS as Content Script
    participant BG as Background Script
    participant Canvas as OffscreenCanvas
    participant Browser as Browser Icon
    
    CS->>BG: sendMessage({action: 'updateIcon', color})
    BG->>Canvas: new OffscreenCanvas(200, 200)
    Canvas->>Canvas: getContext('2d')
    Canvas->>Canvas: beginPath() + fillStyle + arc()
    Canvas->>Canvas: fill() + getImageData()
    Canvas->>BG: Return image data
    BG->>Browser: chrome.action.setIcon(imageData)
    Browser->>Browser: Update toolbar icon

🔄 Pedagogical Check-in

Pag-unawa sa Kumpletong Extension: Siguraduhin ang mastery mo sa buong sistema:

  • Paano gumagana ang message passing sa pagitan ng iba't ibang extension scripts?
  • Bakit natin ginagamit ang OffscreenCanvas sa halip na regular na Canvas para sa performance?
  • Anong papel ang ginagampanan ng Chrome Runtime API sa arkitektura ng extension?
  • Paano nagmamapa ang algorithm ng pagkalkula ng kulay ng data sa visual na feedback?

Mga Pagsasaalang-alang sa Pagganap: Ang iyong extension ngayon ay nagpapakita ng:

  • Epektibong messaging: Malinis na komunikasyon sa pagitan ng mga script contexts
  • Optimized na rendering: Ang OffscreenCanvas ay pumipigil sa pag-block ng UI
  • Real-time na updates: Dinamikong pagbabago ng icon base sa live na data
  • Pamamahala ng memorya: Tamang paglilinis at paghawak ng mga resources

Oras na para subukan ang iyong extension:

  • I-build ang lahat gamit ang npm run build
  • I-reload ang iyong extension sa browser (huwag kalimutan ang hakbang na ito)
  • Buksan ang iyong extension at panoorin ang pagbabago ng kulay ng icon
  • Suriin kung paano ito tumutugon sa totoong carbon data mula sa iba't ibang bahagi ng mundo

Ngayon, malalaman mo agad kung magandang oras na para maglaba o kung mas mabuting maghintay para sa mas malinis na enerhiya. Nakagawa ka ng isang bagay na tunay na kapaki-pakinabang at natutunan ang tungkol sa pagganap ng browser sa proseso.

Hamon ng GitHub Copilot Agent 🚀

Gamitin ang Agent mode para tapusin ang sumusunod na hamon:

Deskripsyon: Pagandahin ang kakayahan ng browser extension sa pagsubaybay sa pagganap sa pamamagitan ng pagdaragdag ng feature na sumusubaybay at nagpapakita ng load times para sa iba't ibang bahagi ng extension.

Prompt: Gumawa ng sistema ng pagsubaybay sa pagganap para sa browser extension na sumusukat at naglo-log ng oras na kinakailangan upang kunin ang CO2 data mula sa API, kalkulahin ang mga kulay, at i-update ang icon. Magdagdag ng function na tinatawag na performanceTracker na gumagamit ng Performance API upang sukatin ang mga operasyong ito at ipakita ang mga resulta sa browser console na may timestamps at duration metrics.

Alamin pa ang tungkol sa agent mode dito.

🚀 Hamon

Narito ang isang kawili-wiling misyon ng detektibo: pumili ng ilang open source na mga website na matagal nang umiiral (halimbawa Wikipedia, GitHub, o Stack Overflow) at suriin ang kanilang commit history. Kaya mo bang matukoy kung saan sila gumawa ng mga pagpapabuti sa pagganap? Anong mga problema ang paulit-ulit na lumilitaw?

Ang iyong paraan ng pagsisiyasat:

  • Maghanap ng mga commit messages na may mga salitang tulad ng "optimize," "performance," o "faster"
  • Tingnan ang mga pattern - patuloy ba nilang inaayos ang parehong uri ng mga isyu?
  • Kilalanin ang mga karaniwang sanhi ng pagbagal ng mga website
  • Ibahagi ang iyong natuklasan - matututo ang ibang mga developer mula sa mga totoong halimbawa

Post-Lecture Quiz

Post-lecture quiz

Review & Self Study

Isaalang-alang ang pag-sign up para sa isang performance newsletter

Suriin ang ilan sa mga paraan kung paano sinusukat ng mga browser ang web performance sa pamamagitan ng pagtingin sa performance tabs sa kanilang web tools. May nakita ka bang malalaking pagkakaiba?

Ano ang Magagawa Mo sa Loob ng Susunod na 5 Minuto

  • Buksan ang browser Task Manager (Shift+Esc sa Chrome) upang makita ang paggamit ng resource ng extension
  • Gamitin ang DevTools Performance tab upang mag-record at suriin ang performance ng webpage
  • Tingnan ang Extensions page ng browser upang makita kung aling mga extension ang nakakaapekto sa startup time
  • Subukang i-disable ang mga extension pansamantala upang makita ang mga pagkakaiba sa performance

🎯 Ano ang Maaaring Makamit sa Loob ng Isang Oras

  • Tapusin ang post-lesson quiz at unawain ang mga konsepto ng pagganap
  • Mag-implement ng background script para sa iyong browser extension
  • Matutunan ang paggamit ng browser.alarms para sa epektibong background tasks
  • Magpraktis ng message passing sa pagitan ng content scripts at background scripts
  • Sukatin at i-optimize ang paggamit ng resource ng iyong extension

📅 Ang Iyong Lingguhang Paglalakbay sa Pagganap

  • Kumpletuhin ang isang high-performance browser extension na may background functionality
  • Masterin ang service workers at modern extension architecture
  • Mag-implement ng epektibong data synchronization at caching strategies
  • Matutunan ang advanced debugging techniques para sa pagganap ng extension
  • I-optimize ang iyong extension para sa parehong functionality at resource efficiency
  • Gumawa ng komprehensibong tests para sa mga senaryo ng pagganap ng extension

🌟 Ang Iyong Buwanang Mastery sa Optimization

  • Gumawa ng enterprise-grade browser extensions na may optimal performance
  • Matutunan ang tungkol sa Web Workers, Service Workers, at modern web performance
  • Mag-ambag sa mga open source projects na nakatuon sa performance optimization
  • Masterin ang browser internals at advanced debugging techniques
  • Gumawa ng mga performance monitoring tools at best practices guides
  • Maging isang performance expert na tumutulong sa pag-optimize ng web applications

🎯 Ang Iyong Browser Extension Mastery Timeline

timeline
    title Complete Extension Development Progression
    
    section Performance Fundamentals (20 minutes)
        Browser Profiling: DevTools mastery
                         : Timeline analysis
                         : Bottleneck identification
                         : Critical rendering path
        
    section Background Tasks (25 minutes)
        Extension Architecture: Message passing
                              : Background scripts
                              : Runtime API usage
                              : Cross-context communication
        
    section Visual Feedback (30 minutes)
        Dynamic UI: Color calculation algorithms
                  : Canvas API integration
                  : Icon generation
                  : Real-time updates
        
    section Performance Optimization (35 minutes)
        Efficient Code: Async operations
                      : Memory management
                      : Resource cleanup
                      : Performance monitoring
        
    section Production Ready (45 minutes)
        Polish & Testing: Cross-browser compatibility
                        : Error handling
                        : User experience
                        : Performance validation
        
    section Advanced Features (1 week)
        Extension Ecosystem: Chrome Web Store
                           : User feedback
                           : Analytics integration
                           : Update management
        
    section Professional Development (2 weeks)
        Enterprise Extensions: Team collaboration
                             : Code reviews
                             : CI/CD pipelines
                             : Security audits
        
    section Expert Mastery (1 month)
        Platform Expertise: Advanced Chrome APIs
                          : Performance optimization
                          : Architecture patterns
                          : Open source contribution

🛠️ Ang Iyong Kumpletong Toolkit sa Pag-develop ng Extension

Matapos tapusin ang trilogy na ito, na-master mo na ang:

  • Arkitektura ng Browser: Malalim na pag-unawa kung paano nag-iintegrate ang mga extension sa mga sistema ng browser
  • Profiling ng Pagganap: Kakayahang tukuyin at ayusin ang mga bottlenecks gamit ang developer tools
  • Async Programming: Modernong JavaScript patterns para sa responsive, non-blocking operations
  • API Integration: Pagkuha ng external data na may authentication at error handling
  • Disenyo ng Visual: Dinamikong UI updates at Canvas-based graphics generation
  • Message Passing: Komunikasyon sa pagitan ng mga script sa arkitektura ng extension
  • User Experience: Loading states, error handling, at intuitive interactions
  • Production Skills: Testing, debugging, at optimization para sa real-world deployment

Mga Aplikasyon sa Totoong Buhay: Ang iyong mga kasanayan sa pag-develop ng extension ay direktang naaangkop sa:

  • Progressive Web Apps: Katulad na arkitektura at mga pattern ng pagganap
  • Electron Desktop Apps: Cross-platform applications gamit ang web technologies
  • Mobile Hybrid Apps: Cordova/PhoneGap development gamit ang web APIs
  • Enterprise Web Applications: Mga kumplikadong dashboard at productivity tools
  • Chrome DevTools Extensions: Advanced developer tooling at debugging
  • Web API Integration: Anumang application na nakikipag-ugnayan sa external services

Propesyonal na Epekto: Ngayon ay kaya mo nang:

  • Gumawa ng production-ready browser extensions mula sa konsepto hanggang deployment
  • I-optimize ang pagganap ng web application gamit ang industry-standard profiling tools
  • Mag-arkitekto ng scalable systems na may tamang separation of concerns
  • Mag-debug ng mga kumplikadong async operations at cross-context communication
  • Mag-ambag sa mga open source extension projects at browser standards

Mga Susunod na Oportunidad:

  • Chrome Web Store Developer: Mag-publish ng mga extension para sa milyun-milyong user
  • Web Performance Engineer: Mag-specialize sa optimization at user experience
  • Browser Platform Developer: Mag-ambag sa pag-develop ng browser engine
  • Extension Framework Creator: Gumawa ng mga tools na tumutulong sa ibang developer
  • Developer Relations: Magbahagi ng kaalaman sa pamamagitan ng pagtuturo at paggawa ng content

🌟 Achievement Unlocked: Nakagawa ka ng isang kumpleto, functional na browser extension na nagpapakita ng mga propesyonal na kasanayan sa pag-develop at modernong web standards!

Assignment

Analyze a site for performance


Paunawa:
Ang dokumentong ito ay isinalin gamit ang AI translation service Co-op Translator. Bagamat sinisikap naming maging tumpak, mangyaring tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi eksaktong impormasyon. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na pinagmulan. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na dulot ng paggamit ng pagsasaling ito.