Skip to content
Snippets Groups Projects
Unverified Commit ba843ffa authored by Jaime Pérez Crespo's avatar Jaime Pérez Crespo Committed by GitHub
Browse files

Merge pull request #1189 from melanger/configurableCache

config of module.php cache headers
parents 06401d6a 0c14180d
No related branches found
No related tags found
No related merge requests found
......@@ -861,6 +861,31 @@ $config = [
*/
'production' => true,
/*
* SimpleSAMLphp modules can host static resources which are served through PHP.
* The serving of the resources can be configured through these settings.
*/
'assets' => [
/*
* These settings adjust the caching headers that are sent
* when serving static resources.
*/
'caching' => [
/*
* Amount of seconds before the resource should be fetched again
*/
'max_age' => 86400,
/*
* Calculate a checksum of every file and send it to the browser
* This allows the browser to avoid downloading assets again in situations
* where the Last-Modified header cannot be trusted,
* for example in cluster setups
*
* Defaults false
*/
'etag' => false,
],
],
/*********************
......
......@@ -264,12 +264,21 @@ class Module
}
}
$assetConfig = $config->getConfigItem('assets', new Configuration([], '[assets]'));
$cacheConfig = $assetConfig->getConfigItem('caching', new Configuration([], '[assets][caching]'));
$response = new BinaryFileResponse($path);
$response->setCache(['public' => true, 'max_age' => 86400]);
$response->setExpires(new \DateTime(gmdate('D, j M Y H:i:s \G\M\T', time() + 10 * 60)));
$response->setLastModified(new \DateTime(gmdate('D, j M Y H:i:s \G\M\T', filemtime($path))));
$response->setCache([
// "public" allows response caching even if the request was authenticated,
// which is exactly what we want for static resources
'public' => true,
'max_age' => (string)$cacheConfig->getInteger('max_age', 86400)
]);
$response->setAutoLastModified();
if ($cacheConfig->getBoolean('etag', false)) {
$response->setAutoEtag();
}
$response->isNotModified($request);
$response->headers->set('Content-Type', $contentType);
$response->headers->set('Content-Length', sprintf('%u', filesize($path))); // force file size to an unsigned
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE);
$response->prepare($request);
return $response;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment