Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Symfony Etagging

Symfony Etagging Laravel Package

adsazad/symfony-etagging

Symfony bundle that adds easy ETag support to any Response. Inject EtaggingInterface and wrap rendered responses with etagResponse() to enable caching/conditional requests. Supports custom headers plus configurable max-age and shared max-age.

View on GitHub
Deep Wiki
Context7

Etagging bundle for symfony to increase speed of your webpage

Frequently asked questions about Symfony Etagging
Can I use this Symfony ETaggingBundle directly in Laravel without extra work?
No, this package is designed for Symfony and requires adaptation for Laravel. You’ll need to wrap it in a Laravel middleware, service provider, or facade to integrate with Laravel’s Response objects. The core ETag logic remains the same, but the injection and response handling must be adapted.
How do I implement ETag caching in Laravel controllers if this is a Symfony package?
Create a Laravel middleware or service that instantiates the Symfony `EtaggingInterface` and applies `etagResponse()` to outgoing responses. For example, inject the service into your controller and call `$etag->etagResponse($response)` before returning. Alternatively, use a global middleware to apply ETags to all responses.
What Laravel versions does this package support, and are there compatibility issues?
This package isn’t Laravel-native, but its underlying Symfony components (like HTTP caching headers) work with Laravel 8+. Test thoroughly for edge cases like JSON APIs or partial responses. Laravel’s Response object is compatible with Symfony’s HttpFoundation, reducing friction but not eliminating the need for custom integration.
Is this package suitable for API responses, or just HTML pages?
While ETags work for APIs, they’re less common than `Last-Modified` or manual caching headers. This package is best for static or semi-static API responses (e.g., documentation, public data). For dynamic APIs, consider Laravel’s built-in caching or CDN-level solutions instead.
How do I set custom headers or adjust max-age for specific routes in Laravel?
Use the `addCustom()` method to inject headers before calling `etagResponse()`. For route-specific max-age, pass values like `$etag->setMaxAge(3600)` (1 hour) or `$etag->setSharedMaxAge(7200)` (2 hours) before wrapping the response. Combine this with Laravel’s route middleware for granular control.
Will this package conflict with Laravel’s built-in caching (e.g., Redis, Cache::tags)?
No direct conflict, but HTTP caching (ETags) and application caching serve different purposes. Use ETags for client-side caching (browsers/CDNs) and Laravel’s caching for server-side data storage. For invalidation, ensure your `Vary` headers or private caching settings align with your use case.
Are there performance risks to generating ETags for every request?
ETag generation adds minimal CPU overhead, but it’s only beneficial for cacheable content. For highly dynamic apps (e.g., real-time dashboards), the trade-off may not justify the benefits. Benchmark with tools like Blackfire or Laravel Debugbar to measure impact before widespread adoption.
How do I handle ETag collisions or invalidation when content changes?
ETag collisions are rare but can occur with identical content. To invalidate, update the ETag by modifying the response body or using versioned URLs (e.g., `/content?v=2`). For shared caching, set `Cache-Control: private` or use `Vary: User-Agent` to exclude proxies.
What’s the best way to enforce consistent ETag usage across all Laravel routes?
Create a global middleware that wraps all responses with `etagResponse()`. For example, in `app/Http/Kernel.php`, add the middleware to the `$middleware` array. This ensures ETags are applied uniformly, but exclude dynamic routes by conditionally bypassing the middleware.
Are there alternatives to this package for Laravel HTTP caching?
Yes. For simple caching, use Laravel’s native `response()->header()` or `Cache::tags()`. For advanced HTTP caching, consider middleware like `spatie/laravel-responsecache` or CDN-level solutions (e.g., Cloudflare, Fastly). This package is unique in its Symfony-based ETag integration but requires extra setup for Laravel.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
calmfox/watch-sylius
damienfern/grpc-symfony-bundle
atoolo/index-bundle
atoolo/genai-bundle
coprotoai/laravel-ticket
davidjln/llm-carbon-bundle
cryonighter/valid-request-bundle
coolms/taxonomy-bundle
coolms/field-bundle
articulate-orm/symfony
aaix/laravel-tall-architect
ephoto/akeneo-connector
emmanuelballery/eb-plantumlbundle
emielburgman/symfony-visitor-beacon
emielburgman/symfony-visit-storage
emielburgman/symfony-security-headers
emielburgman/symfony-log-viewer
emarref/xdebug-bundle
emarref/pubnub-bundle
elriseio/finance-money-bundle