Skip to content
Snippets Groups Projects
Verified Commit 572b08c0 authored by Théodore Biadala's avatar Théodore Biadala
Browse files

Issue #3454507 by hablat, catch: Aggregated asset generation causes uncacheable assets

(cherry picked from commit 4f37d8d6)
parent 5eb99caa
No related branches found
No related tags found
3 merge requests!11769Issue #3517987: Add option to contextual filters to encode slashes in query parameter.,!11185Issue #3477324 by andypost, alexpott: Fix usage of str_getcsv() and fgetcsv() for PHP 8.4,!9944Issue #3483353: Consider making the createCopy config action optionally fail...
Pipeline #276137 passed with warnings
Pipeline: drupal

#276146

    ......@@ -16,6 +16,7 @@
    use Drupal\Core\Theme\ThemeManagerInterface;
    use Drupal\system\FileDownloadController;
    use Symfony\Component\HttpFoundation\BinaryFileResponse;
    use Symfony\Component\HttpFoundation\RedirectResponse;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
    ......@@ -183,6 +184,11 @@ public function deliver(Request $request, string $file_name) {
    $generated_hash = $this->generateHash($group);
    $data = $this->optimizer->optimizeGroup($group);
    $response = new Response($data, 200, [
    'Cache-control' => static::CACHE_CONTROL,
    'Content-Type' => $this->contentType,
    ]);
    // However, the hash from the library definitions in code may not match the
    // hash from the URL. This can be for three reasons:
    // 1. Someone has requested an outdated URL, i.e. from a cached page, which
    ......@@ -198,10 +204,15 @@ public function deliver(Request $request, string $file_name) {
    if (hash_equals($generated_hash, $received_hash)) {
    $this->dumper->dumpToUri($data, $this->assetType, $uri);
    }
    return new Response($data, 200, [
    'Cache-control' => static::CACHE_CONTROL,
    'Content-Type' => $this->contentType,
    ]);
    else {
    $expected_filename = $this->fileExtension . '_' . $generated_hash . '.' . $this->fileExtension;
    $response = new RedirectResponse(
    str_replace($file_name, $expected_filename, $request->getRequestUri()),
    301,
    ['Cache-Control' => 'public, max-age=3600, must-revalidate'],
    );
    }
    return $response;
    }
    /**
    ......
    ......@@ -187,16 +187,12 @@ protected function assertInvalidAggregates(string $url): void {
    $session->visit($this->setInvalidLibrary($url));
    $this->assertSession()->statusCodeEquals(200);
    // When an invalid asset hash name is given.
    $session->visit($this->replaceGroupHash($url));
    $this->assertSession()->statusCodeEquals(200);
    $headers = $session->getResponseHeaders();
    $this->assertEquals(['no-store, private'], $headers['Cache-Control']);
    // And again to confirm it's not cached on disk.
    $session->visit($this->replaceGroupHash($url));
    $this->assertSession()->statusCodeEquals(200);
    $headers = $session->getResponseHeaders();
    $this->assertEquals(['no-store, private'], $headers['Cache-Control']);
    $current_url = $session->getCurrentUrl();
    // Redirect to the correct one.
    $this->assertEquals($url, $current_url);
    }
    /**
    ......
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Please register or to comment