이 가이드에는 빠른 최적화부터 심층적인 조정까지 고성능 Laravel 애플리케이션을 구축하는 데 도움이 될 수 있는 다양한 성능 최적화 팁이 나열되어 있습니다.
이 가이드 작성에 도움을 준 Enlightn에는 많은 학생들이 있습니다. Laravel 자동화 성능이나 보안 도구를 찾고 계시다면 이 웹사이트를 방문해보세요.
사용자가 로딩이 느린 앱보다 빠른 앱을 선호한다는 것은 의심의 여지가 없습니다.
Google의 연구에 따르면 웹사이트를 로드하는 데 3초 이상 걸리면 모바일 장치 사용자의 53%가 웹사이트를 잃게 됩니다(떠나기를 선택합니다). 그리고 모바일 웹사이트의 평균 로딩 시간은 약 15초입니다. 이래서 성능이 중요해!
앱을 로드하는 데 1초가 더 걸릴수록 고객 전환율은 낮아집니다. 다행스럽게도 Laravel 애플리케이션의 경우 이는 해결하기 어려운 문제가 아닙니다.
Laravel에는 간단한 구성으로 사용할 수 있는 몇 가지 성능 개선 기능이 내장되어 있습니다.
가장 중요한 성능 개선은 경로 캐시입니다. Laravel 애플리케이션이 시작될 때마다 미들웨어가 결정되고, 별칭이 결정되고, 경로 그룹이 결정되고, 경로 컨트롤러 작업이 지정되고, 요청 매개변수가 처리된다는 것을 알고 계셨습니까?
Artisan 명령 route:cache
를 사용하면 필요한 모든 라우팅 정보를 캐시하여 라우팅 처리를 건너뛸 수 있습니다. route:cache
来缓存所有必需的路由信息,从而跳过路由处理:
php artisan route:cache
这条命令可以给你带来 5 倍的性能提升!是最简单也是最有效的优化。
除了路由缓存,Laravel 还提供以下内容:
提示:你应该确保将上述缓存命令添加到部署脚本中,以便每次部署时都重新缓存。否则,路由或配置文件的任何更改都不会在应用中体现。
Laravel 开发者常犯的一个错误是在生产模式下安装所有依赖项。一些开发包(例如 Ignition)会在内存中记录查询、日志和转储,从而提供带有上下文的友好错误消息,简化调试过程。尽管这在开发中很有用,但会减慢生产环境中应用程序的速度。
在部署脚本中,使用 Composer 安装拓展包的同时请务必使用 -no-dev
选项:
composer install --prefer-dist --no-dev -o
此外,请确保如上所述在生产环境中使用 -o
选项。这可以让 Composer 可以通过生成「classmap」来优化自动加载器。
如果你的应用在运行时没有生成类,你可以选择使用 --classmap-authoritative
选项而不是 -o
rrreee이 명령을 사용하면 성능이 5배 향상됩니다! 가장 간단하고 효과적인 최적화입니다.
Laravel 개발자가 저지르는 일반적인 실수는 프로덕션 모드에서 모든 종속 항목을 설치하는 것입니다. Ignition과 같은 일부 개발 패키지는 쿼리, 로그 및 메모리 덤프를 기록하여 컨텍스트와 함께 친숙한 오류 메시지를 제공하고 디버깅을 단순화합니다. 이는 개발에는 유용하지만 프로덕션에서는 애플리케이션 속도를 저하시킬 수 있습니다.
-no-dev
옵션을 사용해야 합니다. rrreee또한 -o도 꼭 사용하세요. 위에서 언급한 대로 프로덕션 환경에서
옵션을 사용합니다. 이를 통해 Composer는 "클래스 맵"을 생성하여 오토로더를 최적화할 수 있습니다. 애플리케이션이 런타임에 클래스를 생성하지 않는 경우 추가 최적화를 위해 -o
옵션 대신 --classmap-authoritative
옵션을 사용하도록 선택할 수 있습니다. Autoloader의 Composer 문서 일반적으로 이러한 작업의 일반적인 예로는 CSV 파일 구문 분석 및 저장, 타사 API와의 상호 작용, 사용자에게 알림 보내기, 길고 시간이 많이 걸리는 데이터베이스 쿼리, 검색 색인 업데이트 등이 있습니다.
압축 헤더는 애플리케이션 성능에 상당한 영향을 미칠 수 있습니다. CSS, JS, XML 또는 JSON과 같은 텍스트 형식 파일에 대해 웹 서버에서 압축 또는 CDN을 활성화했는지 확인하십시오.
이미지 형식에는 이미 압축 알고리즘이 구현되어 있으며 대부분의 경우 이미지 형식 파일이 압축되었으며 이미지는 텍스트 형식 파일이 아닙니다(XML 문서인 SVG 형식 제외). 따라서 이미지 형식에는 압축이 필요하지 않습니다.
웹 서버 또는 CDN에 gzip 또는 brotli(이전 브라우저는 brotli를 지원하지 않을 수 있음)를 설정하여 성능을 크게 향상시킬 수 있습니다.
일반적으로 압축을 하면 파일 크기를 약 80% 정도 줄일 수 있습니다!
캐싱은 특히 이미지, CSS, JS 파일과 같은 정적 리소스의 경우 애플리케이션 성능을 향상시킬 수 있습니다. 해당하는 경우 웹 서버 또는 CDN 수준에서 캐시 제어 헤더를 활성화하는 것이 좋습니다. WebServer 대신 Larvel 애플리케이션에서 이러한 제어 헤더를 설정하려면 Larvel의 Cache Control Middleware를 사용할 수 있습니다.
캐시 헤더 필드는 웹 사이트를 여러 번 방문할 때 브라우저가 정적 리소스를 반복적으로 요청하지 않도록 합니다. 이를 통해 후속 방문 시 웹사이트가 더 빠르게 로드되므로 사용자 경험이 향상됩니다.
Laravel Mix는 CSS 또는 JS 코드가 변경될 때 브라우저가 오래된 캐시 콘텐츠를 계속 사용하지 않도록 즉시 사용 가능한 캐시 정리 기능을 제공합니다.
콘텐츠 전송 네트워크(CDN)는 웹 사이트 방문자에게 더 가까운 서버를 사용하여 서비스를 제공하는 지리적으로 분산된 서버 그룹입니다. 이를 통해 사용자는 더 빠른 로딩 시간을 경험할 수 있습니다.
더 빠른 로딩 속도와 더 짧은 로딩 시간 외에도 CDN은 웹 서버 부하 감소, DDOS 보호, 정적 리소스 서비스 분석 등과 같은 다른 이점도 있습니다.
인기 있는 CDN으로는 CloudFlare, AWS CloudFront 및 Azure CDN이 있습니다. 대부분의 CDN에는 특정 무료 평가판 제한이 있습니다. 정적 리소스의 로딩 성능을 향상하려면 CDN 사용을 고려해 보세요.
Laravel은 프레임워크에서 즉시 사용 가능한 CDN 지원 구성 요소인 Mix 및 도우미 기능 asset을 제공합니다.
스크립트를 최소화하면 애플리케이션에서 실행에 필요하지 않은 추가 코드(예: 코드 주석, 공백, 단축된 변수 이름 및 기타 최적화)가 제거됩니다. 이는 프로덕션 환경에서 JS 및 CSS 파일의 크기를 줄이는 일반적이고 효과적인 방법입니다.
Laravel Mix는 프로덕션 스크립트에 즉시 사용 가능한 출력 최소화 기능을 제공합니다
Laravel에는 캐싱 지원이 내장되어 있습니다. 캐싱은 읽기 작업이 많은 워크로드에 가장 적합합니다. 이러한 워크로드에는 시간이 많이 걸리는 데이터 검색 또는 데이터 처리 작업이 포함되는 경우가 많습니다.
캐싱에 대한 몇 가지 일반적인 시나리오는 다음과 같습니다:
캐싱은 long tail
(거의 요청되지 않는 항목)에는 쓸모가 없다는 점을 기억하세요. 반대로 데이터 업데이트와 비교하여 빈번한 데이터 검색에는 주의해서 사용해야 합니다.
또한 캐시된 콘텐츠가 변경될 때마다 캐시를 무효화하거나 플러시해야 합니다. 예를 들어 프로필 헤더를 캐싱하는 경우 사용자가 프로필 사진을 업데이트한 후 캐시를 새로 고칩니다.
일부 페이지를 로드하는 데 시간이 오래 걸리거나 메모리 사용량이 많은 경우 성능 병목 현상을 식별해야 할 수도 있습니다. Laravel 생태계에는 Laravel Telescope, Laravel Debugbar 및 Clockwork를 포함하여 이를 수행하는 데 도움이 되는 많은 도구가 있습니다.
몇 가지 일반적인 성능 병목 현상은 다음과 같습니다.
위의 디버깅 도구를 사용하여 애플리케이션의 성능 병목 현상을 식별할 수 없는 경우 XDebug 또는 Blackfire와 같은 분석 도구를 사용하는 것이 좋습니다.
또한 참조용 전체 온라인 체크리스트가 있습니다. 41. 과정 요약 | "LX3 Laravel 성능 최적화 소개".
성능 최적화는 영원한 주제이지만 Laravel에는 믹스, 큐, 캐시와 같은 여러 내장 구성 요소가 있어 성능 최적화가 쉬워 보입니다! 애플리케이션 성능 향상에 관해 새로운 내용을 배우셨기를 바랍니다.
원본주소 : https://laravel-news.com/performance-checklist
번역주소 : https://learnku.com/laravel/t/55702
[관련 추천 : laravel 영상 튜토리얼]
위 내용은 Laravel8에서 성능을 최적화하는 방법은 무엇입니까? 최적화 팁 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!