프로덕션 환경에서만 전류 제한을 위해 Redis를 사용하는 Laravel 사례
P粉541565322
P粉541565322 2024-01-10 17:54:47
0
1
456

배경

기본적으로 Laravel은 속도 제한(조절)을 위해 두 가지 미들웨어를 제공합니다:

으아악

문서에 나와 있듯이 Redis를 캐시 드라이버로 사용하는 경우 Kernel.php에서 다음과 같이 매핑을 변경할 수 있습니다.

으아악

질문

문제는 위의 내용이 동적이 아니라 환경에 따라 다르다는 것입니다. 예를 들어 내 stagingproduction环境中,我使用Redis,但在我的localdevelopment환경에서는 Redis를 사용하지 않습니다.

가능한 해결책

다음과 같은 명백한 더티 솔루션이 있습니다(Kernel.php):

으아악

재정의하지 않고 관련 미들웨어를 동적으로 선택하는 "표준" 방법이 있습니까 Kernel构造函数的情况下实现这一点?基本上,我希望我的应用程序可以根据环境是否设置为production(或者默认缓存存储设置为redis).

업데이트

위 해결 방법은 응용 프로그램이 부팅되기 전에 커널에 액세스하므로 현재 환경을 사용할 수 없기 때문에 작동하지 않습니다. 지금 고려 중인 또 다른 해결책은 관련 클래스가 동적으로 호출될 수 있도록 기본 ThrottleRequests 클래스를 확장하는 것입니다.

P粉541565322
P粉541565322

모든 응답(1)
P粉043432210

많은 연구와 테스트 끝에 RouteServiceProvider中动态设置throttle미들웨어가 최고의 솔루션이라는 결론에 도달했습니다. 코드는 다음과 같습니다.

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿