From 35dff8f003f4497f37746b167c089704291b3e2a Mon Sep 17 00:00:00 2001 From: Kevin Bond Date: Tue, 18 Oct 2022 17:30:57 -0400 Subject: [PATCH] [Asset] improve performance of `UrlPackage::chooseBaseUrl()` Co-authored-by: Frank de Jonge --- .../Component/Asset/Tests/UrlPackageTest.php | 15 ++++++++------- src/Symfony/Component/Asset/UrlPackage.php | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Symfony/Component/Asset/Tests/UrlPackageTest.php b/src/Symfony/Component/Asset/Tests/UrlPackageTest.php index 0b681a4b22f2f..6384b45ba5443 100644 --- a/src/Symfony/Component/Asset/Tests/UrlPackageTest.php +++ b/src/Symfony/Component/Asset/Tests/UrlPackageTest.php @@ -48,10 +48,10 @@ public function getConfigs() ['file:///example/com/foo/', '', 'foo', 'file:///example/com/foo/foo?v1'], [['http://example.com'], '', '/foo', 'http://example.com/foo?v1'], - [['http://example.com', 'http://example.net'], '', '/foo', 'http://example.com/foo?v1'], - [['http://example.com', 'http://example.net'], '', '/fooa', 'http://example.net/fooa?v1'], - [['file:///example/com', 'file:///example/net'], '', '/foo', 'file:///example/com/foo?v1'], - [['ftp://example.com', 'ftp://example.net'], '', '/fooa', 'ftp://example.net/fooa?v1'], + [['http://example.com', 'http://example.net'], '', '/foo', 'http://example.net/foo?v1'], + [['http://example.com', 'http://example.net'], '', '/fooa', 'http://example.com/fooa?v1'], + [['file:///example/com', 'file:///example/net'], '', '/foo', 'file:///example/net/foo?v1'], + [['ftp://example.com', 'ftp://example.net'], '', '/fooa', 'ftp://example.com/fooa?v1'], ['http://example.com', 'version-%2$s/%1$s', '/foo', 'http://example.com/version-v1/foo'], ['http://example.com', 'version-%2$s/%1$s', 'foo', 'http://example.com/version-v1/foo'], @@ -77,15 +77,16 @@ public function getContextConfigs() return [ [false, 'http://example.com', '', 'foo', 'http://example.com/foo?v1'], [false, ['http://example.com'], '', 'foo', 'http://example.com/foo?v1'], - [false, ['http://example.com', 'https://example.com'], '', 'foo', 'http://example.com/foo?v1'], - [false, ['http://example.com', 'https://example.com'], '', 'fooa', 'https://example.com/fooa?v1'], + [false, ['http://example.com', 'https://example.com'], '', 'foo', 'https://example.com/foo?v1'], + [false, ['http://example.com', 'https://example.com'], '', 'fooa', 'http://example.com/fooa?v1'], [false, ['http://example.com/bar'], '', 'foo', 'http://example.com/bar/foo?v1'], [false, ['http://example.com/bar/'], '', 'foo', 'http://example.com/bar/foo?v1'], [false, ['//example.com/bar/'], '', 'foo', '//example.com/bar/foo?v1'], [true, ['http://example.com'], '', 'foo', 'http://example.com/foo?v1'], [true, ['http://example.com', 'https://example.com'], '', 'foo', 'https://example.com/foo?v1'], - [true, ['', 'https://example.com'], '', 'foo', '/foo?v1'], + [true, ['', 'https://example.com'], '', 'foo', 'https://example.com/foo?v1'], + [true, ['', 'https://example.com'], '', 'bar', '/bar?v1'], ]; } diff --git a/src/Symfony/Component/Asset/UrlPackage.php b/src/Symfony/Component/Asset/UrlPackage.php index 5f3c1cc405235..575523db849e6 100644 --- a/src/Symfony/Component/Asset/UrlPackage.php +++ b/src/Symfony/Component/Asset/UrlPackage.php @@ -107,7 +107,7 @@ public function getBaseUrl(string $path): string */ protected function chooseBaseUrl(string $path): int { - return (int) fmod(hexdec(substr(hash('sha256', $path), 0, 10)), \count($this->baseUrls)); + return abs(crc32($path)) % \count($this->baseUrls); } private function getSslUrls(array $urls)