generator = $generator; $this->cacheKillSwitch = $cache_kill_switch; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('simple_sitemap.generator'), $container->get('page_cache_kill_switch') ); } /** * Returns the whole sitemap, a requested sitemap chunk, or the sitemap index file. * Caches the response in case of expected output, prevents caching otherwise. * * @param int $chunk_id * Optional ID of the sitemap chunk. If none provided, the first chunk or * the sitemap index is fetched. * * @throws NotFoundHttpException * * @return object * Returns an XML response. */ public function getSitemap($chunk_id = NULL) { $output = $this->generator->getSitemap($chunk_id); if (!$output) { $this->cacheKillSwitch->trigger(); throw new NotFoundHttpException(); } // Display sitemap with correct XML header. $response = new CacheableResponse($output, Response::HTTP_OK, [ 'content-type' => 'application/xml', 'X-Robots-Tag' => 'noindex', // Do not index the sitemap itself. ]); // Cache output. $meta_data = $response->getCacheableMetadata(); $meta_data->addCacheTags(['simple_sitemap']); return $response; } }