기본적으로 Laravel은 속도 제한(조절)을 위해 두 가지 미들웨어를 제공합니다:
으아악문서에 나와 있듯이 Redis를 캐시 드라이버로 사용하는 경우 Kernel.php
에서 다음과 같이 매핑을 변경할 수 있습니다.
문제는 위의 내용이 동적이 아니라 환경에 따라 다르다는 것입니다. 예를 들어 내 staging
和production
环境中,我使用Redis,但在我的local
和development
환경에서는 Redis를 사용하지 않습니다.
다음과 같은 명백한 더티 솔루션이 있습니다(Kernel.php
):
재정의하지 않고 관련 미들웨어를 동적으로 선택하는 "표준" 방법이 있습니까 Kernel
构造函数的情况下实现这一点?基本上,我希望我的应用程序可以根据环境是否设置为production
(或者默认缓存存储设置为redis
).
위 해결 방법은 응용 프로그램이 부팅되기 전에 커널에 액세스하므로 현재 환경을 사용할 수 없기 때문에 작동하지 않습니다. 지금 고려 중인 또 다른 해결책은 관련 클래스가 동적으로 호출될 수 있도록 기본 ThrottleRequests
클래스를 확장하는 것입니다.
많은 연구와 테스트 끝에
으아아아RouteServiceProvider
中动态设置throttle
미들웨어가 최고의 솔루션이라는 결론에 도달했습니다. 코드는 다음과 같습니다.