jean-beru/fos-http-cache-cloudfront

Tools to manage CloudFront HTTP caching proxy with PHP

Maintainers

👁 Jean-Beru

Package info

github.com/Jean-Beru/fos-http-cache-cloudfront

pkg:composer/jean-beru/fos-http-cache-cloudfront

Statistics

Installs: 3 101

Dependents: 1

Suggesters: 1

Stars: 0

Open Issues: 0

1.2.0 2024-06-04 08:15 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 2594f61b7979f393861b0932fd1f3d9531232194

  • Hubert Lenoir <lenoir.hubert.woop@gmail.com>

httpcachingcloudfrontinvalidationpurge

This package is auto-updated.

Last update: 2026-06-04 12:32:16 UTC


README

👁 Latest Version
👁 Total Downloads
👁 Monthly Downloads
👁 Software License
👁 Tests

This library provides an implementation of FOSHttpCache for CloudFront.

Usage

Initialize dependency

First, create an instance of AsyncAws\CloudFront\CloudFrontClient to allow the proxy to make requests. See aws-sdk-php documentation for more information.

use Aws\CloudFront\CloudFrontClient;

$client = new CloudFrontClient(/* client configuration */);

Create the CloudFront proxy

To instantiate the proxy, pass the CloudFront client and the AWS CloudFront distribution ID.

use JeanBeru\HttpCacheCloudFront\Proxy\CloudFront;

$proxy = new CloudFront(
 client: $client,
 options: [
 'distribution_id' => 'XYZ1234657',
 ],
);

Invalidate URLs

To invalidate /homepage URL and all URLs matching the /assets/* pattern on the "XYZ1234657" distribution.

$proxy
 ->purge('/homepage')
 ->purge('/assets/*')
 // To send the purge request, flush() method must be called
 ->flush()
; 

Avoid request duplication

CloudFront APIs asks for a "caller reference" to avoid duplicated requests. By default, this library use the UniqIdCallerReferenceGenerator to generate a unique identifier.

You can use other generators present in the CallerReference folder or implement your own by implementing the CallerReferenceGenerator interface.

For instance, if you want to avoid duplicate calls in the same minute:

use JeanBeru\HttpCacheCloudFront\Proxy\CloudFront;
use JeanBeru\HttpCacheCloudFront\CallerReference\DateCallerReferenceGenerator;

$proxy = new CloudFront(
 client: $client,
 options: [
 'distribution_id' => 'XYZ1234657',
 'caller_reference_generator' => new DateCallerReferenceGenerator('YmdHi'),
 ],
);

If a duplication is detected by AWS, a FOS\HttpCache\Exception\ProxyResponseException will be thrown.

Resources