@umacloud/knowledge 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/00-governance/governance-capabilities.md +557 -0
- package/00-governance/knowledge-map.md +39 -0
- package/00-governance/maintenance-policy.md +76 -0
- package/00-governance/review-checklist.md +81 -0
- package/README.md +13 -0
- package/ai/01-standards/agent-development-complete.md +691 -0
- package/ai/01-standards/llm-application-complete.md +488 -0
- package/ai/01-standards/mlops-complete.md +798 -0
- package/ai/01-standards/prompt-engineering-complete.md +646 -0
- package/ai/01-standards/rag-architecture-complete.md +649 -0
- package/ai/02-playbooks/llm-evaluation-playbook.md +847 -0
- package/ai/03-checklists/ai-project-checklist.md +215 -0
- package/ai/04-antipatterns/ai-antipatterns.md +661 -0
- package/ai/05-cases/case-rag-production.md +147 -0
- package/ai/06-glossary/ai-glossary.md +162 -0
- package/ai/agent-evaluation-benchmark.md +53 -0
- package/ai/ai-agent-memory-context-management.md +41 -0
- package/ai/ai-cost-capacity-optimization-playbook.md +42 -0
- package/ai/ai-data-security-and-compliance-playbook.md +37 -0
- package/ai/ai-domain-index-and-checklist.md +40 -0
- package/ai/ai-governance-maturity-model.md +50 -0
- package/ai/ai-model-selection-and-routing-strategy.md +47 -0
- package/ai/ai-observability-and-oncall-runbook.md +52 -0
- package/ai/ai-rag-engineering-playbook.md +42 -0
- package/ai/ai-red-team-and-safety-evaluation.md +42 -0
- package/ai/ai-release-readiness-and-rollback-gate.md +42 -0
- package/ai/llm-agent-engineering-deep-dive.md +57 -0
- package/ai/prompt-and-tool-guardrails.md +52 -0
- package/api/01-standards/enterprise-api-standards.md +198 -0
- package/api/01-standards/rest-api-design-guide.md +63 -0
- package/api/02-playbooks/api-pagination-playbook.md +93 -0
- package/api/02-playbooks/graphql-production-playbook.md +176 -0
- package/api/03-checklists/api-review-checklist.md +55 -0
- package/api/04-antipatterns/api-antipatterns.md +112 -0
- package/architecture/01-standards/api-gateway-patterns.md +496 -0
- package/architecture/01-standards/cloud-native-patterns.md +644 -0
- package/architecture/01-standards/distributed-systems-patterns.md +591 -0
- package/architecture/01-standards/event-driven-architecture.md +595 -0
- package/architecture/01-standards/microservices-patterns-complete.md +968 -0
- package/architecture/01-standards/microservices-patterns.md +495 -0
- package/architecture/01-standards/system-design-interview.md +664 -0
- package/architecture/02-playbooks/microservices-patterns-playbook.md +137 -0
- package/architecture/02-playbooks/migration-playbook.md +780 -0
- package/architecture/02-playbooks/system-design-playbook.md +779 -0
- package/architecture/03-checklists/architecture-decision-checklist.md +297 -0
- package/architecture/04-antipatterns/architecture-antipatterns.md +417 -0
- package/architecture/05-cases/case-netflix-microservices.md +413 -0
- package/architecture/06-glossary/architecture-glossary.md +164 -0
- package/architecture/adr-template-and-examples.md +38 -0
- package/architecture/api-gateway-deep-dive.md +1291 -0
- package/architecture/configuration-management.md +1162 -0
- package/architecture/distributed-transactions.md +1220 -0
- package/architecture/microservices-complete.md +735 -0
- package/architecture/resilience-and-disaster-patterns.md +37 -0
- package/architecture/service-governance.md +1198 -0
- package/architecture/system-architecture-deep-dive.md +37 -0
- package/backend/01-standards/analytics-and-growth.md +65 -0
- package/backend/01-standards/api-and-error-conventions.md +120 -0
- package/backend/01-standards/application-layering-and-packaging.md +160 -0
- package/backend/01-standards/auth-implementation.md +104 -0
- package/backend/01-standards/backend-framework-idioms.md +74 -0
- package/backend/01-standards/background-jobs-and-async.md +66 -0
- package/backend/01-standards/caching-strategies-complete.md +390 -0
- package/backend/01-standards/config-and-observability.md +77 -0
- package/backend/01-standards/data-modeling-and-persistence.md +94 -0
- package/backend/01-standards/django-complete.md +1765 -0
- package/backend/01-standards/email-and-notifications.md +64 -0
- package/backend/01-standards/fastapi-complete.md +925 -0
- package/backend/01-standards/file-upload-and-storage.md +66 -0
- package/backend/01-standards/graphql-api-complete.md +416 -0
- package/backend/01-standards/llm-application-standard.md +78 -0
- package/backend/01-standards/message-queue-patterns.md +379 -0
- package/backend/01-standards/microservices-and-distributed.md +78 -0
- package/backend/01-standards/nestjs-complete.md +2167 -0
- package/backend/01-standards/payment-integration.md +80 -0
- package/backend/01-standards/rate-limiting-complete.md +451 -0
- package/backend/01-standards/realtime-and-websocket.md +65 -0
- package/backend/01-standards/search-and-filtering.md +64 -0
- package/backend/01-standards/spring-boot-complete.md +445 -0
- package/backend/02-playbooks/api-design-playbook.md +718 -0
- package/backend/02-playbooks/email-send-playbook.md +130 -0
- package/backend/02-playbooks/file-upload-s3-playbook.md +153 -0
- package/backend/02-playbooks/typescript-enterprise-playbook.md +133 -0
- package/backend/02-playbooks/websocket-realtime-playbook.md +154 -0
- package/backend/03-checklists/api-launch-checklist.md +189 -0
- package/backend/04-antipatterns/backend-antipatterns.md +1051 -0
- package/blockchain/01-standards/blockchain-basics.md +557 -0
- package/blockchain/01-standards/smart-contract-development.md +1315 -0
- package/cicd/01-standards/deployment-and-delivery-standard.md +96 -0
- package/cicd/01-standards/github-actions-complete.md +473 -0
- package/cicd/01-standards/release-and-store-submission.md +75 -0
- package/cicd/02-playbooks/cicd-pipeline-playbook.md +144 -0
- package/cicd/02-playbooks/release-management-playbook.md +605 -0
- package/cicd/03-checklists/pipeline-security-checklist.md +168 -0
- package/cicd/04-antipatterns/cicd-antipatterns.md +589 -0
- package/cicd/05-cases/case-deployment-automation.md +221 -0
- package/cicd/05-cases/case-gitops-transformation.md +212 -0
- package/cicd/06-glossary/cicd-glossary.md +114 -0
- package/cicd/cicd-blueprint-deep-dive.md +38 -0
- package/cicd/release-readiness-gate.md +37 -0
- package/cloud-native/01-standards/container-security.md +741 -0
- package/cloud-native/01-standards/kubernetes-complete.md +812 -0
- package/cloud-native/02-playbooks/api-gateway-playbook.md +155 -0
- package/cloud-native/02-playbooks/gitops-with-argocd.md +760 -0
- package/cloud-native/02-playbooks/k8s-troubleshooting-playbook.md +1942 -0
- package/cloud-native/02-playbooks/message-queue-playbook.md +129 -0
- package/cloud-native/02-playbooks/multicloud-governance.md +726 -0
- package/cloud-native/02-playbooks/serverless-patterns.md +788 -0
- package/cloud-native/02-playbooks/service-mesh-playbook.md +612 -0
- package/cloud-native/02-playbooks/terraform-iac-playbook.md +143 -0
- package/cloud-native/03-checklists/container-security-checklist.md +431 -0
- package/cloud-native/03-checklists/k8s-production-readiness-checklist.md +460 -0
- package/cloud-native/04-antipatterns/container-antipatterns.md +660 -0
- package/cloud-native/04-antipatterns/k8s-antipatterns.md +743 -0
- package/cloud-native/05-cases/case-k8s-migration.md +478 -0
- package/cloud-native/05-cases/case-k8s-scaling.md +642 -0
- package/cloud-native/05-cases/case-k8s-security-incident.md +397 -0
- package/cloud-native/06-glossary/cloud-native-glossary.md +337 -0
- package/cross-platform/01-standards/cross-platform-frameworks.md +83 -0
- package/cross-platform/01-standards/platform-selection-and-architecture.md +77 -0
- package/data/01-standards/elasticsearch-complete.md +2098 -0
- package/data/01-standards/postgresql-complete.md +1613 -0
- package/data/01-standards/redis-complete.md +1527 -0
- package/data/02-playbooks/database-optimization-playbook.md +403 -0
- package/data/02-playbooks/elasticsearch-production-playbook.md +132 -0
- package/data/03-checklists/database-launch-checklist.md +187 -0
- package/data/04-antipatterns/database-antipatterns.md +873 -0
- package/data/05-cases/case-database-migration.md +310 -0
- package/data/06-glossary/database-glossary.md +440 -0
- package/data/data-governance-and-modeling-deep-dive.md +39 -0
- package/data-engineering/01-standards/airflow-complete.md +523 -0
- package/data-engineering/01-standards/kafka-complete.md +1521 -0
- package/data-engineering/02-playbooks/spark-etl-playbook.md +496 -0
- package/data-engineering/03-checklists/pipeline-launch-checklist.md +194 -0
- package/data-engineering/04-antipatterns/data-pipeline-antipatterns.md +684 -0
- package/data-engineering/05-cases/case-real-time-pipeline.md +355 -0
- package/data-engineering/06-glossary/data-engineering-glossary.md +429 -0
- package/database/01-standards/database-schema-standards.md +147 -0
- package/database/02-playbooks/postgresql-optimization-quick.md +52 -0
- package/database/02-playbooks/postgresql-performance-optimization.md +58 -0
- package/database/02-playbooks/postgresql-production-playbook.md +146 -0
- package/database/02-playbooks/redis-caching-playbook.md +117 -0
- package/database/03-checklists/database-review-checklist.md +50 -0
- package/database/04-antipatterns/database-antipatterns.md +112 -0
- package/design/01-standards/ui-design-system-complete.md +423 -0
- package/design/02-playbooks/design-handoff-playbook.md +254 -0
- package/design/02-playbooks/design-review-playbook.md +388 -0
- package/design/03-checklists/design-review-checklist.md +246 -0
- package/design/04-antipatterns/design-antipatterns.md +378 -0
- package/design/05-cases/case-design-system-adoption.md +328 -0
- package/design/06-glossary/design-glossary.md +329 -0
- package/design/ui-full-lifecycle-cross-platform-playbook.md +571 -0
- package/design/ux-system-deep-dive.md +38 -0
- package/design-systems/00-craft-rules.md +71 -0
- package/design-systems/aesthetic-families.md +43 -0
- package/design-systems/anti-ai-slop.md +162 -0
- package/design-systems/bold-geometric.md +120 -0
- package/design-systems/brutalist-bold.md +103 -0
- package/design-systems/editorial-clean.md +109 -0
- package/design-systems/glass-aurora.md +108 -0
- package/design-systems/modern-minimal.md +145 -0
- package/design-systems/premium-luxury.md +106 -0
- package/design-systems/product-type-design-map.md +48 -0
- package/design-systems/soft-warm.md +123 -0
- package/design-systems/tech-utility.md +113 -0
- package/desktop/01-standards/desktop-app-standard.md +72 -0
- package/desktop/01-standards/desktop-design.md +71 -0
- package/development/00-governance/document-template.md +41 -0
- package/development/01-standards/api-versioning-strategies.md +432 -0
- package/development/01-standards/authentication-patterns-complete.md +479 -0
- package/development/01-standards/css-architecture-complete.md +550 -0
- package/development/01-standards/database-migration-strategies.md +484 -0
- package/development/01-standards/elasticsearch-complete.md +347 -0
- package/development/01-standards/git-complete.md +371 -0
- package/development/01-standards/golang-complete.md +1565 -0
- package/development/01-standards/graphql-complete.md +298 -0
- package/development/01-standards/javascript-bundlers-complete.md +469 -0
- package/development/01-standards/javascript-typescript-complete.md +528 -0
- package/development/01-standards/jest-complete.md +275 -0
- package/development/01-standards/linux-complete.md +234 -0
- package/development/01-standards/logging-observability-complete.md +526 -0
- package/development/01-standards/microservices-communication.md +502 -0
- package/development/01-standards/mongodb-complete.md +406 -0
- package/development/01-standards/oauth2-complete.md +285 -0
- package/development/01-standards/performance-optimization-complete.md +289 -0
- package/development/01-standards/playwright-complete.md +247 -0
- package/development/01-standards/postgresql-complete.md +456 -0
- package/development/01-standards/pytest-complete.md +340 -0
- package/development/01-standards/python-async-programming.md +902 -0
- package/development/01-standards/python-complete.md +956 -0
- package/development/01-standards/python-decorators-complete.md +799 -0
- package/development/01-standards/python-design-patterns.md +2854 -0
- package/development/01-standards/python-packaging-distribution.md +420 -0
- package/development/01-standards/python-testing-strategies.md +607 -0
- package/development/01-standards/python-web-frameworks-comparison.md +471 -0
- package/development/01-standards/redis-complete.md +317 -0
- package/development/01-standards/rest-api-complete.md +316 -0
- package/development/01-standards/rust-complete.md +578 -0
- package/development/01-standards/typescript-advanced-types.md +1513 -0
- package/development/01-standards/web-security-complete.md +292 -0
- package/development/02-playbooks/api-design-playbook.md +810 -0
- package/development/02-playbooks/database-migration-playbook.md +580 -0
- package/development/02-playbooks/debugging-playbook.md +692 -0
- package/development/02-playbooks/feature-delivery-playbook.md +430 -0
- package/development/02-playbooks/incident-hotfix-playbook.md +387 -0
- package/development/02-playbooks/performance-optimization-playbook.md +531 -0
- package/development/02-playbooks/performance-tuning-playbook.md +652 -0
- package/development/02-playbooks/refactor-playbook.md +403 -0
- package/development/02-playbooks/release-playbook.md +469 -0
- package/development/03-checklists/architecture-review-checklist.md +168 -0
- package/development/03-checklists/data-migration-checklist.md +157 -0
- package/development/03-checklists/oncall-handover-checklist.md +173 -0
- package/development/03-checklists/pr-checklist.md +158 -0
- package/development/03-checklists/production-readiness-checklist.md +190 -0
- package/development/03-checklists/release-readiness-checklist.md +154 -0
- package/development/03-checklists/security-review-checklist.md +182 -0
- package/development/04-antipatterns/api-antipatterns.md +657 -0
- package/development/04-antipatterns/architecture-antipatterns.md +686 -0
- package/development/04-antipatterns/backend-antipatterns.md +648 -0
- package/development/04-antipatterns/cicd-antipatterns.md +540 -0
- package/development/04-antipatterns/code-smell-antipatterns.md +571 -0
- package/development/04-antipatterns/data-antipatterns.md +658 -0
- package/development/04-antipatterns/database-antipatterns.md +578 -0
- package/development/04-antipatterns/frontend-antipatterns.md +635 -0
- package/development/04-antipatterns/reliability-antipatterns.md +700 -0
- package/development/04-antipatterns/security-antipatterns.md +747 -0
- package/development/05-cases/case-api-version-migration.md +428 -0
- package/development/05-cases/case-authorization-hardening.md +383 -0
- package/development/05-cases/case-bluegreen-rollback.md +466 -0
- package/development/05-cases/case-cache-snowball-protection.md +485 -0
- package/development/05-cases/case-ci-cd-pipeline.md +544 -0
- package/development/05-cases/case-database-scaling.md +500 -0
- package/development/05-cases/case-db-hotspot-optimization.md +487 -0
- package/development/05-cases/case-incident-mttr-reduction.md +563 -0
- package/development/05-cases/case-microservice-migration.md +375 -0
- package/development/05-cases/case-performance-optimization.md +406 -0
- package/development/05-cases/case-security-incident-response.md +345 -0
- package/development/06-glossary/full-stack-glossary.md +166 -0
- package/development/09-maturity/quarterly-audit-template.md +35 -0
- package/development/11-ui-excellence/ui-aesthetic-system.md +41 -0
- package/development/11-ui-excellence/ui-engineering-excellence.md +435 -0
- package/development/12-scenarios/development-scenarios-guide.md +565 -0
- package/development/13-implementation-assets/implementation-toolkit.md +282 -0
- package/development/13-implementation-assets/knowledge-gates-execution.md +43 -0
- package/development/14-full-lifecycle/software-lifecycle-gates.md +511 -0
- package/development/15-lifecycle-templates/project-templates-collection.md +791 -0
- package/development/api-contract-and-versioning-guide.md +36 -0
- package/development/api-governance-complete.md +43 -0
- package/development/backend-engineering-complete.md +43 -0
- package/development/code-review-quality-complete.md +43 -0
- package/development/concurrency-reliability-complete.md +43 -0
- package/development/database-engineering-complete.md +43 -0
- package/development/engineering-effectiveness-complete.md +43 -0
- package/development/engineering-standards-deep-dive.md +38 -0
- package/development/frontend-engineering-complete.md +43 -0
- package/development/performance-capacity-complete.md +43 -0
- package/development/refactor-migration-complete.md +42 -0
- package/development/refactoring-and-techdebt-playbook.md +37 -0
- package/development/security-in-development-complete.md +43 -0
- package/devops/01-standards/cicd-pipeline-complete.md +262 -0
- package/devops/01-standards/docker-complete.md +1490 -0
- package/devops/01-standards/github-actions-complete.md +337 -0
- package/devops/01-standards/kubernetes-complete.md +638 -0
- package/devops/01-standards/terraform-complete.md +2117 -0
- package/devops/02-playbooks/docker-compose-playbook.md +233 -0
- package/devops/02-playbooks/docker-k8s-production-playbook.md +186 -0
- package/devops/02-playbooks/docker-production-playbook.md +952 -0
- package/edge-iot/01-standards/edge-iot-complete.md +473 -0
- package/experts/architect/api-design.md +178 -0
- package/experts/architect/methodology.md +124 -0
- package/experts/architect/security.md +75 -0
- package/experts/backend-lead/methodology.md +216 -0
- package/experts/devops/methodology.md +160 -0
- package/experts/frontend-lead/methodology.md +178 -0
- package/experts/product-manager/industry/ecommerce.md +43 -0
- package/experts/product-manager/industry/saas.md +40 -0
- package/experts/product-manager/methodology.md +97 -0
- package/experts/qa-lead/methodology.md +123 -0
- package/experts/qa-lead/test-strategy.md +128 -0
- package/experts/uiux-designer/methodology.md +125 -0
- package/frontend/01-standards/accessibility-complete.md +532 -0
- package/frontend/01-standards/accessibility-standard.md +74 -0
- package/frontend/01-standards/admin-dashboard-and-crud.md +72 -0
- package/frontend/01-standards/design-tokens-complete.md +444 -0
- package/frontend/01-standards/forms-and-validation.md +77 -0
- package/frontend/01-standards/frontend-architecture-and-layering.md +119 -0
- package/frontend/01-standards/i18n-and-localization.md +65 -0
- package/frontend/01-standards/nextjs-complete.md +451 -0
- package/frontend/01-standards/react-complete.md +713 -0
- package/frontend/01-standards/react-hooks-complete-guide.md +1100 -0
- package/frontend/01-standards/react-hooks-complete.md +1171 -0
- package/frontend/01-standards/seo-and-web-vitals.md +77 -0
- package/frontend/01-standards/state-management-complete.md +444 -0
- package/frontend/01-standards/vue-complete.md +499 -0
- package/frontend/01-standards/vue3-complete.md +2002 -0
- package/frontend/01-standards/web-framework-best-practices.md +64 -0
- package/frontend/01-standards/web-performance-complete.md +495 -0
- package/frontend/02-playbooks/accessibility-a11y-playbook.md +161 -0
- package/frontend/02-playbooks/frontend-performance-playbook.md +707 -0
- package/frontend/02-playbooks/i18n-internationalization-playbook.md +120 -0
- package/frontend/02-playbooks/performance-optimization-playbook.md +163 -0
- package/frontend/02-playbooks/react-nextjs-production-playbook.md +167 -0
- package/frontend/02-playbooks/react-state-management-playbook.md +173 -0
- package/frontend/03-checklists/component-quality-checklist.md +166 -0
- package/frontend/03-checklists/frontend-launch-checklist.md +299 -0
- package/frontend/04-antipatterns/frontend-antipatterns.md +886 -0
- package/frontend/05-cases/case-performance-optimization.md +274 -0
- package/harmony/01-standards/harmonyos-arkts-standard.md +75 -0
- package/harmony/01-standards/harmonyos-design.md +65 -0
- package/high-quality-engineering-playbook.md +54 -0
- package/incident/01-standards/incident-response-complete.md +303 -0
- package/incident/02-playbooks/chaos-engineering-playbook.md +883 -0
- package/incident/02-playbooks/postmortem-playbook.md +398 -0
- package/incident/03-checklists/incident-readiness-checklist.md +181 -0
- package/incident/04-antipatterns/incident-antipatterns.md +490 -0
- package/incident/05-cases/case-cascade-failure.md +176 -0
- package/incident/06-glossary/incident-glossary.md +114 -0
- package/incident/postmortem-and-response-deep-dive.md +39 -0
- package/industries/ecommerce/ecommerce-complete.md +631 -0
- package/industries/education/education-complete.md +555 -0
- package/industries/fintech/fintech-complete.md +501 -0
- package/industries/gaming/gaming-complete.md +587 -0
- package/industries/healthcare/healthcare-complete.md +452 -0
- package/low-code/01-standards/low-code-complete.md +944 -0
- package/miniprogram/01-standards/ai-common-mistakes.md +61 -0
- package/miniprogram/01-standards/miniprogram-custom-navbar-capsule.md +77 -0
- package/miniprogram/01-standards/miniprogram-design.md +61 -0
- package/miniprogram/01-standards/miniprogram-standard.md +81 -0
- package/mobile/01-standards/android-material-design.md +70 -0
- package/mobile/01-standards/flutter-complete.md +384 -0
- package/mobile/01-standards/ios-design-hig.md +78 -0
- package/mobile/01-standards/mobile-app-standard.md +85 -0
- package/mobile/01-standards/react-native-complete.md +352 -0
- package/mobile/02-playbooks/mobile-cross-platform-playbook.md +175 -0
- package/mobile/02-playbooks/mobile-performance.md +473 -0
- package/mobile/03-checklists/mobile-release-checklist.md +234 -0
- package/mobile/04-antipatterns/mobile-antipatterns.md +798 -0
- package/mobile/05-cases/case-app-performance.md +500 -0
- package/mobile/05-cases/case-app-startup-optimization.md +218 -0
- package/mobile/06-glossary/mobile-glossary.md +484 -0
- package/observability/01-standards/observability-standards.md +103 -0
- package/observability/02-playbooks/prometheus-grafana-playbook.md +135 -0
- package/observability/02-playbooks/structured-logging-playbook.md +73 -0
- package/observability/03-checklists/observability-checklist.md +54 -0
- package/observability/04-antipatterns/observability-antipatterns.md +106 -0
- package/operations/01-standards/prometheus-monitoring-complete.md +1578 -0
- package/operations/02-playbooks/capacity-planning-playbook.md +620 -0
- package/operations/03-checklists/production-launch-checklist.md +365 -0
- package/operations/04-antipatterns/operations-antipatterns.md +664 -0
- package/operations/05-cases/case-sre-practices.md +581 -0
- package/operations/06-glossary/operations-glossary.md +120 -0
- package/operations/aiops-anomaly-detection.md +758 -0
- package/operations/capacity-planning.md +1061 -0
- package/operations/chaos-engineering.md +659 -0
- package/operations/incident-command-system.md +38 -0
- package/operations/observability-complete.md +442 -0
- package/operations/slo-sli-playbook.md +517 -0
- package/operations/sre-operations-deep-dive.md +39 -0
- package/package.json +8 -0
- package/performance/01-standards/performance-and-scalability.md +80 -0
- package/performance/01-standards/performance-standards.md +156 -0
- package/performance/02-playbooks/query-optimization-playbook.md +103 -0
- package/performance/03-checklists/performance-checklist.md +56 -0
- package/performance/04-antipatterns/performance-antipatterns.md +146 -0
- package/product/01-standards/product-management-complete.md +285 -0
- package/product/02-playbooks/feature-launch-playbook.md +207 -0
- package/product/02-playbooks/user-research-playbook.md +532 -0
- package/product/03-checklists/feature-launch-checklist.md +275 -0
- package/product/04-antipatterns/product-antipatterns.md +355 -0
- package/product/05-cases/case-mvp-to-scale.md +384 -0
- package/product/06-glossary/product-glossary.md +462 -0
- package/product/feature-prioritization-framework.md +40 -0
- package/product/kpi-and-metric-tree.md +37 -0
- package/product/product-discovery-and-prd-deep-dive.md +41 -0
- package/quantum/01-standards/quantum-complete.md +1186 -0
- package/security/01-standards/api-security-complete.md +511 -0
- package/security/01-standards/container-runtime-security.md +574 -0
- package/security/01-standards/data-protection-gdpr.md +543 -0
- package/security/01-standards/owasp-top10-complete.md +1890 -0
- package/security/01-standards/secure-coding-baseline.md +90 -0
- package/security/01-standards/supply-chain-security.md +441 -0
- package/security/01-standards/web-security-checklist.md +108 -0
- package/security/01-standards/zero-trust-architecture.md +521 -0
- package/security/02-playbooks/auth-sso-playbook.md +166 -0
- package/security/02-playbooks/incident-response-security-playbook.md +588 -0
- package/security/02-playbooks/owasp-api-security-playbook.md +129 -0
- package/security/02-playbooks/payment-integration-playbook.md +119 -0
- package/security/02-playbooks/penetration-testing-playbook.md +517 -0
- package/security/03-checklists/security-audit-checklist.md +356 -0
- package/security/04-antipatterns/security-coding-antipatterns.md +580 -0
- package/security/05-cases/case-log4shell-incident.md +537 -0
- package/security/05-cases/case-major-breaches.md +468 -0
- package/security/06-glossary/security-glossary.md +212 -0
- package/security/compliance-automation.md +993 -0
- package/security/container-security.md +680 -0
- package/security/devsecops-complete.md +426 -0
- package/security/sast-dast-sca.md +775 -0
- package/security/secrets-management.md +594 -0
- package/security/security-architecture-deep-dive.md +37 -0
- package/security/threat-modeling-stride-playbook.md +40 -0
- package/seed-templates/auth-system.md +59 -0
- package/seed-templates/blog-content.md +94 -0
- package/seed-templates/dashboard.md +89 -0
- package/seed-templates/docs-site.md +73 -0
- package/seed-templates/e-commerce.md +50 -0
- package/seed-templates/saas-landing.md +92 -0
- package/seed-templates/settings-page.md +51 -0
- package/testing/01-standards/test-strategy-and-layering.md +83 -0
- package/testing/01-standards/testing-strategy-complete.md +422 -0
- package/testing/01-standards/unit-testing-best-practices.md +118 -0
- package/testing/02-playbooks/e2e-testing-playbook.md +988 -0
- package/testing/02-playbooks/testing-strategy-playbook.md +126 -0
- package/testing/03-checklists/test-strategy-checklist.md +208 -0
- package/testing/04-antipatterns/testing-antipatterns.md +718 -0
- package/testing/05-cases/case-testing-transformation.md +300 -0
- package/testing/06-glossary/testing-glossary.md +110 -0
- package/testing/risk-based-test-matrix.md +36 -0
- package/testing/testing-strategy-deep-dive.md +37 -0
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: case-app-performance
|
|
3
|
+
title: 案例:移动端性能优化 - 启动时间从 5s 降到 1.5s
|
|
4
|
+
domain: mobile
|
|
5
|
+
category: 05-cases
|
|
6
|
+
difficulty: intermediate
|
|
7
|
+
tags: [11-12, 7-10, agent, app, case, checklist, mobile, performance]
|
|
8
|
+
quality_score: 70
|
|
9
|
+
last_updated: 2026-06-15
|
|
10
|
+
---
|
|
11
|
+
# 案例:移动端性能优化 - 启动时间从 5s 降到 1.5s
|
|
12
|
+
|
|
13
|
+
## 概述
|
|
14
|
+
|
|
15
|
+
本案例记录一款电商类 App(iOS + Android 双端,React Native 实现,DAU 50 万)的性能优化实战过程。项目历时 3 个月,核心成果:冷启动时间从 5.2s 降至 1.5s,页面切换卡顿率从 18% 降至 2%,内存占用峰值从 380MB 降至 210MB,崩溃率从 0.8% 降至 0.15%。本案例覆盖诊断方法、优化策略、实施过程和效果度量。
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 背景
|
|
20
|
+
|
|
21
|
+
### 应用概况
|
|
22
|
+
|
|
23
|
+
- **技术栈**:React Native 0.71,部分原生模块(支付/地图/相机)
|
|
24
|
+
- **规模**:120+ 个页面,50+ 个 npm 依赖,JS Bundle 12MB
|
|
25
|
+
- **用户规模**:注册用户 300 万,DAU 50 万
|
|
26
|
+
- **设备分布**:中低端 Android 设备占比 45%,iOS 55%
|
|
27
|
+
|
|
28
|
+
### 性能现状(优化前基线数据)
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
冷启动时间(P50):5.2s(iOS 3.8s / Android 6.5s)
|
|
32
|
+
热启动时间(P50):2.1s
|
|
33
|
+
首屏内容可见时间(FCP):4.5s
|
|
34
|
+
页面切换卡顿率(帧率 < 30fps 时间占比):18%
|
|
35
|
+
内存占用峰值:380MB
|
|
36
|
+
JS 线程阻塞时间占比:35%
|
|
37
|
+
崩溃率(日):0.8%
|
|
38
|
+
ANR 率(Android):1.2%
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 用户反馈
|
|
42
|
+
|
|
43
|
+
- App Store 评分从 4.5 降至 3.8,差评中"卡顿"出现 200+ 次
|
|
44
|
+
- 用户流失分析显示:启动时间 > 3s 的用户次日留存低 25%
|
|
45
|
+
- 客服反馈 Top 3:加载慢、闪退、发热
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 第一阶段:诊断(第 1-2 周)
|
|
50
|
+
|
|
51
|
+
### 1.1 性能采集体系搭建
|
|
52
|
+
|
|
53
|
+
部署多维度性能监控:
|
|
54
|
+
|
|
55
|
+
| 监控维度 | 工具 | 采集指标 |
|
|
56
|
+
|---------|------|---------|
|
|
57
|
+
| 启动链路 | 自建打点 | 各阶段耗时(Native Init / JS Load / First Render) |
|
|
58
|
+
| 帧率 | react-native-performance | FPS 分布 / 卡顿帧数 |
|
|
59
|
+
| 内存 | Xcode Instruments / Android Profiler | 内存趋势 / 泄漏检测 |
|
|
60
|
+
| 网络 | Flipper Network Plugin | 请求数 / 响应时间 / 失败率 |
|
|
61
|
+
| JS 线程 | Hermes Profiler | 函数调用耗时 / 阻塞时间 |
|
|
62
|
+
| 崩溃 | Sentry | 崩溃堆栈 / 影响用户数 |
|
|
63
|
+
|
|
64
|
+
### 1.2 启动链路分析
|
|
65
|
+
|
|
66
|
+
将冷启动拆解为 6 个阶段:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
阶段 耗时(ms) 占比
|
|
70
|
+
────────────────────────────────────────────────
|
|
71
|
+
1. Native 初始化 800ms 15%
|
|
72
|
+
- Application onCreate
|
|
73
|
+
- RN Bridge 初始化
|
|
74
|
+
- 原生模块注册
|
|
75
|
+
|
|
76
|
+
2. JS Bundle 加载 1200ms 23%
|
|
77
|
+
- Bundle 文件读取
|
|
78
|
+
- JS 引擎解析执行
|
|
79
|
+
|
|
80
|
+
3. JS 初始化 900ms 17%
|
|
81
|
+
- 第三方 SDK 初始化
|
|
82
|
+
- Redux Store 创建
|
|
83
|
+
- 全局配置加载
|
|
84
|
+
|
|
85
|
+
4. 首页数据请求 800ms 15%
|
|
86
|
+
- API 接口调用
|
|
87
|
+
- 数据解析序列化
|
|
88
|
+
|
|
89
|
+
5. 首页渲染 1000ms 19%
|
|
90
|
+
- 组件树构建
|
|
91
|
+
- 布局计算
|
|
92
|
+
- 图片加载
|
|
93
|
+
|
|
94
|
+
6. 可交互等待 500ms 10%
|
|
95
|
+
- 延迟任务执行
|
|
96
|
+
- 动画初始化
|
|
97
|
+
────────────────────────────────────────────────
|
|
98
|
+
总计 5200ms 100%
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 1.3 关键发现
|
|
102
|
+
|
|
103
|
+
1. **JS Bundle 过大**:12MB 未压缩,包含大量未使用代码
|
|
104
|
+
2. **SDK 同步初始化**:5 个第三方 SDK 在启动时同步初始化
|
|
105
|
+
3. **首页请求串行**:3 个 API 请求依次发出而非并行
|
|
106
|
+
4. **图片未优化**:首页 Banner 图 3MB,无缓存策略
|
|
107
|
+
5. **内存泄漏**:列表页反复进入退出后内存持续增长
|
|
108
|
+
6. **过度渲染**:首页组件每次状态变化触发全树渲染
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 第二阶段:启动优化(第 3-6 周)
|
|
113
|
+
|
|
114
|
+
### 2.1 JS Bundle 瘦身
|
|
115
|
+
|
|
116
|
+
**策略 1:代码分割**
|
|
117
|
+
|
|
118
|
+
```javascript
|
|
119
|
+
// 优化前:所有页面打进一个 Bundle
|
|
120
|
+
import HomeScreen from './screens/Home';
|
|
121
|
+
import ProductScreen from './screens/Product';
|
|
122
|
+
import CartScreen from './screens/Cart';
|
|
123
|
+
import ProfileScreen from './screens/Profile';
|
|
124
|
+
// ... 120 个页面全部静态导入
|
|
125
|
+
|
|
126
|
+
// 优化后:按路由懒加载
|
|
127
|
+
const HomeScreen = React.lazy(() => import('./screens/Home'));
|
|
128
|
+
const ProductScreen = React.lazy(() => import('./screens/Product'));
|
|
129
|
+
// 首屏仅加载 Home + 核心组件,其余按需加载
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**策略 2:依赖清理**
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
清理结果:
|
|
136
|
+
- 移除未使用的 npm 包:12 个(-1.8MB)
|
|
137
|
+
- 替换大型库为轻量替代:
|
|
138
|
+
- moment.js (300KB) -> dayjs (2KB)
|
|
139
|
+
- lodash (70KB) -> lodash-es 按需导入 (5KB)
|
|
140
|
+
- lottie-react-native -> 仅在需要时动态导入
|
|
141
|
+
- 图片资源外置到 CDN:-2.5MB
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**策略 3:Hermes 引擎优化**
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
启用 Hermes 预编译字节码(HBC):
|
|
148
|
+
- 原始 JS 解析时间:1200ms
|
|
149
|
+
- HBC 加载时间:400ms
|
|
150
|
+
- 节省:800ms(67% 提升)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Bundle 优化效果**:12MB -> 4.2MB,加载时间 1200ms -> 400ms
|
|
154
|
+
|
|
155
|
+
### 2.2 启动链路优化
|
|
156
|
+
|
|
157
|
+
**策略 1:SDK 延迟初始化**
|
|
158
|
+
|
|
159
|
+
```javascript
|
|
160
|
+
// 优化前:所有 SDK 在 App 启动时同步初始化
|
|
161
|
+
class App {
|
|
162
|
+
componentDidMount() {
|
|
163
|
+
Analytics.init(config); // 200ms
|
|
164
|
+
PushService.init(config); // 150ms
|
|
165
|
+
CrashReporter.init(config); // 100ms
|
|
166
|
+
AdSDK.init(config); // 180ms
|
|
167
|
+
MapSDK.init(config); // 170ms
|
|
168
|
+
// 总计:800ms 阻塞
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// 优化后:分级初始化
|
|
173
|
+
// P0: 首屏必需(崩溃监控)-> 启动时同步
|
|
174
|
+
// P1: 首次交互前需要 -> 首屏渲染后异步
|
|
175
|
+
// P2: 按需使用 -> 使用时才初始化
|
|
176
|
+
class App {
|
|
177
|
+
componentDidMount() {
|
|
178
|
+
CrashReporter.init(config); // P0: 100ms
|
|
179
|
+
InteractionManager.runAfterInteractions(() => {
|
|
180
|
+
Analytics.init(config); // P1: 异步
|
|
181
|
+
PushService.init(config); // P1: 异步
|
|
182
|
+
});
|
|
183
|
+
// AdSDK 和 MapSDK: 进入相关页面时初始化
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**节省**:700ms(启动路径上仅保留 100ms)
|
|
189
|
+
|
|
190
|
+
**策略 2:首页数据预取**
|
|
191
|
+
|
|
192
|
+
```javascript
|
|
193
|
+
// 优化前:JS 初始化完成后才发请求(串行)
|
|
194
|
+
// Native Init -> JS Load -> JS Init -> API Call -> Render
|
|
195
|
+
|
|
196
|
+
// 优化后:Native 层在 Bridge 初始化时并行预取
|
|
197
|
+
// Native Init ──┬── JS Load -> JS Init -> 读取缓存数据 -> Render
|
|
198
|
+
// └── API Prefetch (Native) ──> 数据就绪
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**节省**:首页数据请求从 800ms 降至 0ms(从用户视角看,数据已就绪)
|
|
202
|
+
|
|
203
|
+
**策略 3:骨架屏 + 渐进渲染**
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
渲染策略:
|
|
207
|
+
T+0ms: 显示 Native 启动屏(品牌 Logo)
|
|
208
|
+
T+400ms: 切换到 JS 骨架屏(布局占位)
|
|
209
|
+
T+800ms: 填充缓存数据(上次的首页内容)
|
|
210
|
+
T+1200ms: 替换为最新数据(API 返回后刷新)
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### 2.3 启动优化效果
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
优化项 节省时间
|
|
217
|
+
───────────────────────────────────────
|
|
218
|
+
JS Bundle 瘦身 + Hermes HBC 800ms
|
|
219
|
+
SDK 延迟初始化 700ms
|
|
220
|
+
首页数据预取 800ms
|
|
221
|
+
渐进渲染策略 500ms
|
|
222
|
+
其他小优化 200ms
|
|
223
|
+
───────────────────────────────────────
|
|
224
|
+
总计节省 3000ms
|
|
225
|
+
|
|
226
|
+
冷启动优化结果:
|
|
227
|
+
- 优化前:5200ms
|
|
228
|
+
- 目标值:2000ms
|
|
229
|
+
- 优化后:1500ms(超额完成)
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## 第三阶段:运行时优化(第 7-10 周)
|
|
235
|
+
|
|
236
|
+
### 3.1 列表性能优化
|
|
237
|
+
|
|
238
|
+
电商 App 的商品列表是核心场景,优化前在中低端 Android 设备上滑动帧率仅 20-25fps。
|
|
239
|
+
|
|
240
|
+
**策略 1:FlashList 替代 FlatList**
|
|
241
|
+
|
|
242
|
+
```javascript
|
|
243
|
+
// 优化前:FlatList
|
|
244
|
+
<FlatList
|
|
245
|
+
data={products}
|
|
246
|
+
renderItem={renderProduct}
|
|
247
|
+
keyExtractor={item => item.id}
|
|
248
|
+
/>
|
|
249
|
+
|
|
250
|
+
// 优化后:FlashList(Shopify 开源,复用率更高)
|
|
251
|
+
<FlashList
|
|
252
|
+
data={products}
|
|
253
|
+
renderItem={renderProduct}
|
|
254
|
+
estimatedItemSize={120}
|
|
255
|
+
drawDistance={250}
|
|
256
|
+
/>
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**效果**:列表滑动 FPS 从 22fps 提升到 55fps
|
|
260
|
+
|
|
261
|
+
**策略 2:图片优化**
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
图片加载策略:
|
|
265
|
+
1. 列表中使用缩略图(200x200),详情页使用大图
|
|
266
|
+
2. 使用 WebP 格式(体积减少 30%)
|
|
267
|
+
3. 实现三级缓存:内存 LRU -> 磁盘缓存 -> 网络
|
|
268
|
+
4. 列表滑动时暂停图片加载,停止后恢复
|
|
269
|
+
5. 使用渐进式加载:模糊占位图 -> 缩略图 -> 高清图
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**效果**:图片加载时间减少 60%,内存占用减少 80MB
|
|
273
|
+
|
|
274
|
+
**策略 3:组件渲染优化**
|
|
275
|
+
|
|
276
|
+
```javascript
|
|
277
|
+
// 优化前:每次父组件更新,所有子组件重渲染
|
|
278
|
+
const ProductCard = ({ product, onPress }) => {
|
|
279
|
+
return (
|
|
280
|
+
<TouchableOpacity onPress={() => onPress(product.id)}>
|
|
281
|
+
<Image source={{ uri: product.image }} />
|
|
282
|
+
<Text>{product.title}</Text>
|
|
283
|
+
<Text>{product.price}</Text>
|
|
284
|
+
</TouchableOpacity>
|
|
285
|
+
);
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
// 优化后:React.memo + useCallback
|
|
289
|
+
const ProductCard = React.memo(({ product, onPress }) => {
|
|
290
|
+
return (
|
|
291
|
+
<TouchableOpacity onPress={onPress}>
|
|
292
|
+
<FastImage source={{ uri: product.image }} />
|
|
293
|
+
<Text>{product.title}</Text>
|
|
294
|
+
<Text>{product.price}</Text>
|
|
295
|
+
</TouchableOpacity>
|
|
296
|
+
);
|
|
297
|
+
}, (prev, next) => prev.product.id === next.product.id);
|
|
298
|
+
|
|
299
|
+
// 父组件
|
|
300
|
+
const handlePress = useCallback((id) => {
|
|
301
|
+
navigation.navigate('Product', { id });
|
|
302
|
+
}, [navigation]);
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### 3.2 内存优化
|
|
306
|
+
|
|
307
|
+
**问题诊断**:使用 Xcode Instruments 和 Android Profiler 发现两个内存泄漏:
|
|
308
|
+
|
|
309
|
+
**泄漏 1:事件监听器未清理**
|
|
310
|
+
|
|
311
|
+
```javascript
|
|
312
|
+
// 优化前:组件卸载后监听器仍在
|
|
313
|
+
useEffect(() => {
|
|
314
|
+
const subscription = eventEmitter.addListener('cartUpdate', handler);
|
|
315
|
+
// 缺少清理!
|
|
316
|
+
}, []);
|
|
317
|
+
|
|
318
|
+
// 优化后:
|
|
319
|
+
useEffect(() => {
|
|
320
|
+
const subscription = eventEmitter.addListener('cartUpdate', handler);
|
|
321
|
+
return () => subscription.remove(); // 清理监听器
|
|
322
|
+
}, []);
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**泄漏 2:大图缓存无限增长**
|
|
326
|
+
|
|
327
|
+
```
|
|
328
|
+
优化前:图片缓存无上限,内存持续增长
|
|
329
|
+
优化后:
|
|
330
|
+
- 内存缓存上限 100MB,LRU 策略淘汰
|
|
331
|
+
- 磁盘缓存上限 500MB,7 天过期
|
|
332
|
+
- 低内存警告时主动清理缓存
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
**内存优化效果**:峰值内存 380MB -> 210MB,OOM 崩溃减少 90%
|
|
336
|
+
|
|
337
|
+
### 3.3 网络优化
|
|
338
|
+
|
|
339
|
+
```
|
|
340
|
+
优化策略:
|
|
341
|
+
1. 接口合并:首页 3 个请求合并为 1 个 GraphQL 查询
|
|
342
|
+
2. 数据压缩:启用 gzip,响应体积减少 60%
|
|
343
|
+
3. 缓存策略:SWR(Stale-While-Revalidate)
|
|
344
|
+
- 先展示缓存数据
|
|
345
|
+
- 后台静默刷新
|
|
346
|
+
- 新数据到达后无闪烁更新
|
|
347
|
+
4. 预加载:用户浏览列表时预加载下一页数据
|
|
348
|
+
5. 离线支持:核心数据本地持久化(AsyncStorage -> MMKV)
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
**网络优化效果**:页面加载时间减少 45%,弱网体验显著提升
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## 第四阶段:稳定性优化(第 11-12 周)
|
|
356
|
+
|
|
357
|
+
### 4.1 崩溃治理
|
|
358
|
+
|
|
359
|
+
Top 5 崩溃原因和修复方案:
|
|
360
|
+
|
|
361
|
+
| 排名 | 崩溃类型 | 影响用户 | 原因 | 修复 |
|
|
362
|
+
|:---:|---------|---------|------|------|
|
|
363
|
+
| 1 | OOM | 0.3% | 图片缓存无限增长 | 内存缓存上限 + LRU |
|
|
364
|
+
| 2 | JS Exception | 0.2% | 未处理的 null 引用 | 可选链 + ErrorBoundary |
|
|
365
|
+
| 3 | Native Crash | 0.15% | 原生模块线程安全 | 加锁 + 队列 |
|
|
366
|
+
| 4 | ANR | 0.1% | 主线程 I/O 操作 | 移到后台线程 |
|
|
367
|
+
| 5 | Bridge Error | 0.05% | RN Bridge 消息溢出 | 批量发送 + 节流 |
|
|
368
|
+
|
|
369
|
+
### 4.2 全局错误处理
|
|
370
|
+
|
|
371
|
+
```javascript
|
|
372
|
+
// 全局 JS 错误边界
|
|
373
|
+
class GlobalErrorBoundary extends React.Component {
|
|
374
|
+
state = { hasError: false };
|
|
375
|
+
|
|
376
|
+
static getDerivedStateFromError(error) {
|
|
377
|
+
return { hasError: true };
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
componentDidCatch(error, errorInfo) {
|
|
381
|
+
Sentry.captureException(error, { extra: errorInfo });
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
render() {
|
|
385
|
+
if (this.state.hasError) {
|
|
386
|
+
return <ErrorFallback onRetry={() => this.setState({ hasError: false })} />;
|
|
387
|
+
}
|
|
388
|
+
return this.props.children;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
// 全局未捕获 Promise 异常处理
|
|
393
|
+
if (!__DEV__) {
|
|
394
|
+
const originalHandler = ErrorUtils.getGlobalHandler();
|
|
395
|
+
ErrorUtils.setGlobalHandler((error, isFatal) => {
|
|
396
|
+
Sentry.captureException(error);
|
|
397
|
+
if (isFatal) {
|
|
398
|
+
// 展示友好的崩溃恢复页面
|
|
399
|
+
showCrashRecovery();
|
|
400
|
+
}
|
|
401
|
+
originalHandler(error, isFatal);
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
### 4.3 性能监控看板
|
|
407
|
+
|
|
408
|
+
建立实时性能看板,持续追踪:
|
|
409
|
+
|
|
410
|
+
```
|
|
411
|
+
核心指标(每日更新):
|
|
412
|
+
├── 启动性能
|
|
413
|
+
│ ├── 冷启动 P50 / P95
|
|
414
|
+
│ ├── 热启动 P50 / P95
|
|
415
|
+
│ └── FCP P50 / P95
|
|
416
|
+
├── 运行时性能
|
|
417
|
+
│ ├── 帧率分布(60fps / 30-60fps / <30fps)
|
|
418
|
+
│ ├── 卡顿率(<30fps 时间占比)
|
|
419
|
+
│ └── JS 线程阻塞率
|
|
420
|
+
├── 资源使用
|
|
421
|
+
│ ├── 内存 P50 / P95 / Max
|
|
422
|
+
│ ├── CPU 平均使用率
|
|
423
|
+
│ └── 电量消耗排名
|
|
424
|
+
└── 稳定性
|
|
425
|
+
├── 崩溃率(按版本/设备/OS)
|
|
426
|
+
├── ANR 率
|
|
427
|
+
└── 错误率
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
---
|
|
431
|
+
|
|
432
|
+
## 最终成果
|
|
433
|
+
|
|
434
|
+
### 核心指标对比
|
|
435
|
+
|
|
436
|
+
| 指标 | 优化前 | 优化后 | 提升幅度 |
|
|
437
|
+
|------|--------|--------|---------|
|
|
438
|
+
| 冷启动(P50) | 5.2s | 1.5s | -71% |
|
|
439
|
+
| 冷启动(P95) | 8.1s | 2.8s | -65% |
|
|
440
|
+
| 热启动(P50) | 2.1s | 0.6s | -71% |
|
|
441
|
+
| FCP | 4.5s | 1.2s | -73% |
|
|
442
|
+
| 列表 FPS(中低端) | 22fps | 55fps | +150% |
|
|
443
|
+
| 卡顿率 | 18% | 2% | -89% |
|
|
444
|
+
| 内存峰值 | 380MB | 210MB | -45% |
|
|
445
|
+
| 崩溃率 | 0.8% | 0.15% | -81% |
|
|
446
|
+
| ANR 率 | 1.2% | 0.2% | -83% |
|
|
447
|
+
| JS Bundle 大小 | 12MB | 4.2MB | -65% |
|
|
448
|
+
|
|
449
|
+
### 业务影响
|
|
450
|
+
|
|
451
|
+
```
|
|
452
|
+
性能优化带来的业务指标变化:
|
|
453
|
+
- App Store 评分:3.8 -> 4.5(回升到历史水平)
|
|
454
|
+
- 次日留存率:+8%(从 42% 提升到 50%)
|
|
455
|
+
- 平均使用时长:+15%
|
|
456
|
+
- 转化率(浏览->加购):+12%
|
|
457
|
+
- 差评中"卡顿"关键词:减少 85%
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
---
|
|
461
|
+
|
|
462
|
+
## 可复用的优化清单
|
|
463
|
+
|
|
464
|
+
### 启动优化优先级
|
|
465
|
+
|
|
466
|
+
```
|
|
467
|
+
投入产出比排序:
|
|
468
|
+
1. 启用 Hermes + HBC(高收益,低成本)
|
|
469
|
+
2. SDK 延迟初始化(高收益,低成本)
|
|
470
|
+
3. JS Bundle 瘦身(高收益,中成本)
|
|
471
|
+
4. 数据预取(中收益,中成本)
|
|
472
|
+
5. 骨架屏 + 渐进渲染(中收益,低成本)
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
### 运行时优化优先级
|
|
476
|
+
|
|
477
|
+
```
|
|
478
|
+
1. FlashList 替代 FlatList(高收益,低成本)
|
|
479
|
+
2. React.memo + useCallback(中收益,低成本)
|
|
480
|
+
3. 图片优化(高收益,中成本)
|
|
481
|
+
4. 内存泄漏修复(高收益,高成本)
|
|
482
|
+
5. 网络请求优化(中收益,中成本)
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
## Agent Checklist
|
|
488
|
+
|
|
489
|
+
以下为 AI Agent 在执行移动端性能优化时的检查要点:
|
|
490
|
+
|
|
491
|
+
- [ ] 建立性能基线数据(启动时间/帧率/内存/崩溃率)
|
|
492
|
+
- [ ] 将启动链路拆解为 5-6 个阶段并逐段分析耗时
|
|
493
|
+
- [ ] 确认已启用 Hermes 引擎和字节码预编译(React Native)
|
|
494
|
+
- [ ] 检查 JS Bundle 大小,清理未使用依赖和大型库替换
|
|
495
|
+
- [ ] 确认第三方 SDK 分级初始化(P0 同步 / P1 异步 / P2 按需)
|
|
496
|
+
- [ ] 验证列表使用高性能方案(FlashList / RecyclerListView)
|
|
497
|
+
- [ ] 检查组件是否合理使用 React.memo 防止过度渲染
|
|
498
|
+
- [ ] 验证图片缓存策略和内存上限配置
|
|
499
|
+
- [ ] 确认内存泄漏已排查(事件监听器/定时器/缓存)
|
|
500
|
+
- [ ] 建立持续性能监控看板,设置劣化告警
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: case-app-startup-optimization
|
|
3
|
+
title: App 启动优化案例:冷启动从 5s 降到 1.5s
|
|
4
|
+
domain: mobile
|
|
5
|
+
category: 05-cases
|
|
6
|
+
difficulty: intermediate
|
|
7
|
+
tags: [agent, app, case, checklist, mobile, optimization, startup, 关键教训]
|
|
8
|
+
quality_score: 70
|
|
9
|
+
last_updated: 2026-06-15
|
|
10
|
+
---
|
|
11
|
+
# App 启动优化案例:冷启动从 5s 降到 1.5s
|
|
12
|
+
|
|
13
|
+
## 概述
|
|
14
|
+
|
|
15
|
+
本案例记录某电商 App(Android + iOS 双端)冷启动优化的完整实战过程。
|
|
16
|
+
优化前冷启动时间 5.2s(Android)/ 4.1s(iOS),用户流失率高。
|
|
17
|
+
经过 3 轮优化,最终降至 1.5s(Android)/ 1.2s(iOS),启动阶段用户流失率下降 40%。
|
|
18
|
+
|
|
19
|
+
## 背景
|
|
20
|
+
|
|
21
|
+
- **App 规模**: 200+ 页面,80+ 个 SDK,APK 体积 95MB
|
|
22
|
+
- **技术栈**: Android(Kotlin + Jetpack),iOS(Swift + UIKit)
|
|
23
|
+
- **日活**: 500 万,冷启动占比约 35%(其余为热启动/温启动)
|
|
24
|
+
- **业务压力**: 竞品冷启动 < 2s,自家 App 的应用商店差评中 15% 提到"启动慢"
|
|
25
|
+
|
|
26
|
+
## 启动流程分析
|
|
27
|
+
|
|
28
|
+
### 优化前启动时间线(Android 5.2s)
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
Application.onCreate() 1,800ms ████████████████████
|
|
32
|
+
├── SDK 初始化(80+ 个) 1,200ms ████████████████
|
|
33
|
+
├── 数据库初始化 300ms ████
|
|
34
|
+
├── 全局配置加载 200ms ███
|
|
35
|
+
└── 其他 100ms █
|
|
36
|
+
|
|
37
|
+
SplashActivity 600ms ████████
|
|
38
|
+
├── 广告/闪屏加载 400ms █████
|
|
39
|
+
└── 路由判断 200ms ███
|
|
40
|
+
|
|
41
|
+
MainActivity 2,800ms ████████████████████████████████
|
|
42
|
+
├── 首页布局 inflate 1,200ms ████████████████
|
|
43
|
+
├── 首页数据请求 1,000ms █████████████
|
|
44
|
+
├── 图片加载 400ms █████
|
|
45
|
+
└── 动画/渲染 200ms ███
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## 第一轮优化:SDK 初始化治理(-1.8s)
|
|
49
|
+
|
|
50
|
+
### 问题诊断
|
|
51
|
+
|
|
52
|
+
使用 Android Profiler + Systrace 分析发现:
|
|
53
|
+
- 80+ SDK 全部在 Application.onCreate() 中同步初始化
|
|
54
|
+
- 其中仅 12 个 SDK 是启动必需的
|
|
55
|
+
- 大量 SDK 初始化涉及磁盘 IO 和网络请求
|
|
56
|
+
|
|
57
|
+
### 优化方案
|
|
58
|
+
|
|
59
|
+
**SDK 分级策略**:
|
|
60
|
+
|
|
61
|
+
| 级别 | 时机 | SDK 示例 | 数量 |
|
|
62
|
+
|------|------|---------|------|
|
|
63
|
+
| P0 | Application.onCreate 同步 | 崩溃监控、网络库、日志 | 5 |
|
|
64
|
+
| P1 | 首屏渲染后异步 | 推送、埋点、IM | 12 |
|
|
65
|
+
| P2 | 用户首次使用时懒加载 | 支付、地图、分享、扫码 | 25 |
|
|
66
|
+
| P3 | 后台空闲时初始化 | 广告SDK、更新检查、诊断 | 38+ |
|
|
67
|
+
|
|
68
|
+
**实现方式**:
|
|
69
|
+
|
|
70
|
+
```kotlin
|
|
71
|
+
// 使用 Jetpack App Startup 管理初始化顺序和依赖
|
|
72
|
+
class CrashReporterInitializer : Initializer<CrashReporter> {
|
|
73
|
+
override fun create(context: Context): CrashReporter {
|
|
74
|
+
return CrashReporter.init(context)
|
|
75
|
+
}
|
|
76
|
+
override fun dependencies(): List<Class<out Initializer<*>>> = emptyList()
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// P2/P3 级别 SDK 使用懒加载
|
|
80
|
+
val paymentSDK by lazy {
|
|
81
|
+
PaymentSDK.init(applicationContext)
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**效果**: Application.onCreate 从 1,800ms 降至 400ms(-1,400ms)
|
|
86
|
+
|
|
87
|
+
## 第二轮优化:首页渲染优化(-1.2s)
|
|
88
|
+
|
|
89
|
+
### 布局优化
|
|
90
|
+
|
|
91
|
+
- **减少布局层级**: 首页从 12 层嵌套降至 5 层(ConstraintLayout 替代嵌套 LinearLayout)
|
|
92
|
+
- **ViewStub 延迟加载**: 非首屏可见区域(底部 Tab 内容、弹窗)使用 ViewStub
|
|
93
|
+
- **异步 Inflate**: 使用 AsyncLayoutInflater 预加载次屏布局
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
布局 inflate 时间: 1,200ms → 450ms(-750ms)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 数据预加载
|
|
100
|
+
|
|
101
|
+
- **预请求**: 在 SplashActivity 阶段并行请求首页数据(而非等 MainActivity 创建后)
|
|
102
|
+
- **本地缓存**: 首页数据优先展示上次缓存,后台刷新后静默更新
|
|
103
|
+
- **接口合并**: 首页 5 个接口合并为 1 个聚合接口
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
首页数据就绪: 1,000ms → 200ms(使用缓存时 0ms)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 图片优化
|
|
110
|
+
|
|
111
|
+
- **占位图**: 首屏图片使用低质量模糊占位图(LQIP)
|
|
112
|
+
- **预加载**: SplashActivity 阶段预加载首屏 Banner 图
|
|
113
|
+
- **格式优化**: 全部切换为 WebP 格式,体积减少 30%
|
|
114
|
+
|
|
115
|
+
## 第三轮优化:深度调优(-0.7s)
|
|
116
|
+
|
|
117
|
+
### 多 DEX 优化(Android)
|
|
118
|
+
|
|
119
|
+
- 启用 R8 全量混淆,DEX 文件从 8 个减少到 4 个
|
|
120
|
+
- 主 DEX 仅包含启动必需类
|
|
121
|
+
- APK 体积从 95MB 降至 68MB
|
|
122
|
+
|
|
123
|
+
### 线程优化
|
|
124
|
+
|
|
125
|
+
- 启动阶段线程从 60+ 减少到 15 个(审计并合并冗余线程池)
|
|
126
|
+
- 使用有界线程池避免线程爆炸
|
|
127
|
+
- IO 密集型任务统一使用 IO Dispatcher
|
|
128
|
+
|
|
129
|
+
### GC 优化
|
|
130
|
+
|
|
131
|
+
- 减少启动阶段的临时对象创建
|
|
132
|
+
- 大对象(Bitmap)使用对象池复用
|
|
133
|
+
- 启动阶段 GC 次数从 12 次降至 3 次
|
|
134
|
+
|
|
135
|
+
### ContentProvider 优化
|
|
136
|
+
|
|
137
|
+
- 审计并移除不必要的 ContentProvider(SDK 注入的)
|
|
138
|
+
- 必要的 ContentProvider 合并初始化
|
|
139
|
+
- 从 23 个 ContentProvider 减至 8 个
|
|
140
|
+
|
|
141
|
+
## iOS 端同步优化
|
|
142
|
+
|
|
143
|
+
| 优化项 | 方法 | 效果 |
|
|
144
|
+
|--------|------|------|
|
|
145
|
+
| dylib 加载 | 合并动态库,从 120 个减至 45 个 | -600ms |
|
|
146
|
+
| +load 方法 | 迁移到 +initialize 或懒加载 | -300ms |
|
|
147
|
+
| Storyboard | 首页改用代码布局 | -200ms |
|
|
148
|
+
| 预加载 | main 之前预请求首页数据 | -400ms |
|
|
149
|
+
| 二进制重排 | 基于 Clang 插桩的 Order File | -350ms |
|
|
150
|
+
|
|
151
|
+
## 最终效果
|
|
152
|
+
|
|
153
|
+
### Android
|
|
154
|
+
|
|
155
|
+
| 阶段 | 优化前 | 优化后 | 改善 |
|
|
156
|
+
|------|--------|--------|------|
|
|
157
|
+
| Application.onCreate | 1,800ms | 400ms | -78% |
|
|
158
|
+
| SplashActivity | 600ms | 300ms | -50% |
|
|
159
|
+
| MainActivity 首屏 | 2,800ms | 800ms | -71% |
|
|
160
|
+
| **总计冷启动** | **5,200ms** | **1,500ms** | **-71%** |
|
|
161
|
+
|
|
162
|
+
### iOS
|
|
163
|
+
|
|
164
|
+
| 阶段 | 优化前 | 优化后 | 改善 |
|
|
165
|
+
|------|--------|--------|------|
|
|
166
|
+
| pre-main | 1,800ms | 550ms | -69% |
|
|
167
|
+
| post-main 到首屏 | 2,300ms | 650ms | -72% |
|
|
168
|
+
| **总计冷启动** | **4,100ms** | **1,200ms** | **-71%** |
|
|
169
|
+
|
|
170
|
+
### 业务指标
|
|
171
|
+
|
|
172
|
+
| 指标 | 优化前 | 优化后 |
|
|
173
|
+
|------|--------|--------|
|
|
174
|
+
| 启动阶段流失率 | 12% | 7.2%(-40%) |
|
|
175
|
+
| 应用商店评分 | 4.1 | 4.4 |
|
|
176
|
+
| "启动慢"差评占比 | 15% | 3% |
|
|
177
|
+
| 首页曝光 PV | - | +18% |
|
|
178
|
+
|
|
179
|
+
## 持续保障机制
|
|
180
|
+
|
|
181
|
+
### 启动性能监控
|
|
182
|
+
|
|
183
|
+
- 线上采集启动时间(分 P50/P90/P99),按版本/机型/OS 版本维度
|
|
184
|
+
- 启动时间劣化超过 200ms 自动告警
|
|
185
|
+
- 每个版本发布前必跑启动性能基准测试
|
|
186
|
+
|
|
187
|
+
### SDK 准入机制
|
|
188
|
+
|
|
189
|
+
- 新 SDK 接入必须评估启动影响(Profiler 截图)
|
|
190
|
+
- 启动阶段同步初始化需要架构组审批
|
|
191
|
+
- 每季度审计 SDK 列表,清理废弃 SDK
|
|
192
|
+
|
|
193
|
+
### 自动化检测
|
|
194
|
+
|
|
195
|
+
- CI 集成启动时间自动测试(Macrobenchmark / XCTest)
|
|
196
|
+
- 布局层级检查(lint 规则限制最大嵌套层级)
|
|
197
|
+
- APK/IPA 体积监控(增量超过 2MB 需要说明)
|
|
198
|
+
|
|
199
|
+
## 关键教训
|
|
200
|
+
|
|
201
|
+
1. **SDK 初始化是最大的启动杀手**: 80+ SDK 无序初始化占启动时间 35%
|
|
202
|
+
2. **数据预加载比 UI 优化收益更大**: 首页数据提前请求的收益远超布局优化
|
|
203
|
+
3. **缓存是最好的优化**: 首页展示缓存数据,用户感知秒开
|
|
204
|
+
4. **需要持续防劣化机制**: 没有监控和准入机制,优化成果 3 个月就会被吃掉
|
|
205
|
+
5. **低端机是真实战场**: 中高端机优化前也只有 2-3s,低端机才是 5s+
|
|
206
|
+
|
|
207
|
+
## Agent Checklist
|
|
208
|
+
|
|
209
|
+
- [ ] 是否使用 Profiler/Systrace 定位启动瓶颈
|
|
210
|
+
- [ ] SDK 是否按优先级分级(同步/异步/懒加载)
|
|
211
|
+
- [ ] 首页数据是否支持预加载和缓存优先
|
|
212
|
+
- [ ] 布局层级是否控制在 5 层以内
|
|
213
|
+
- [ ] 图片是否使用 WebP + 占位图 + 预加载
|
|
214
|
+
- [ ] 线程数是否在启动阶段受控
|
|
215
|
+
- [ ] 启动性能是否有线上监控和告警
|
|
216
|
+
- [ ] SDK 准入是否有评估和审批机制
|
|
217
|
+
- [ ] CI 是否集成启动性能自动化测试
|
|
218
|
+
- [ ] APK/IPA 体积是否有监控和增长限制
|