Sfoglia il codice sorgente

Add listener to convert the cache-control header into nginx compatible header

Jordi Boggiano 10 anni fa
parent
commit
ac8e20cc48

+ 18 - 0
src/Packagist/WebBundle/EventListener/CacheListener.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace Packagist\WebBundle\EventListener;
+
+use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
+
+class CacheListener
+{
+    public function onResponse(FilterResponseEvent $e)
+    {
+        $resp = $e->getResponse();
+
+        // add nginx-cache compatible header
+        if ($resp->headers->hasCacheControlDirective('public') && ($cache = $resp->headers->getCacheControlDirective('s-maxage'))) {
+            $resp->headers->set('X-Accel-Expires', $cache);
+        }
+    }
+}

+ 5 - 0
src/Packagist/WebBundle/Resources/config/services.yml

@@ -10,6 +10,11 @@ services:
         tags:
             - { name: twig.extension }
 
+    packagist.cache_listener:
+        class: Packagist\WebBundle\EventListener\CacheListener
+        tags:
+            - { name: kernel.event_listener, event: kernel.response, method: onResponse }
+
     packagist.package_dumper:
         class: Packagist\WebBundle\Package\SymlinkDumper
         arguments: [ @doctrine, @filesystem, @router, "%kernel.root_dir%/../web/", "%packagist_metadata_dir%" ]