presseportale/app/Support/WebCaches.php
Kevin Adametz b74f881ac8 web: Entitaeten im JSON-LD verknuepft, News-Sitemap und llms.txt (Roadmap 2.1, 2.2, 2.7)
- App\Support\StructuredData: Portal-Organization als Publisher mit @id
  und Logo (ImageObject), Newsroom-@id; NewsArticle.author auf der
  Meldung und Organization auf der Newsroom-Seite beschreiben jetzt
  dieselbe Entitaet. Startseiten nutzen denselben Publisher.
- /sitemap-news.xml je Spoke (NewsSitemapController): im Archiv
  sichtbare Meldungen der letzten 48 h, max. 1.000, news:publication
  mit Portalname und Sprache; 15 min gecacht, mit den anderen Sitemaps
  geleert; in robots.txt der Spokes. Hub liefert leere Liste.
- /llms.txt je Host (LlmsTxtController): sachliche Beschreibung,
  URL-Aufbau, aktive Kategorien, Seiten fuer Unternehmen, Rechtliches;
  Hub verweist auf beide Portale. Keine Aussagen ueber KI-Nennungen.
- Protokoll Teil 5 (Block 2) inkl. Betreiber-Schritten fuer das
  Publisher Center und Befund zu 2.5/E5; Roadmap 2.1/2.7 abgehakt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 10:15:28 +00:00

40 lines
1.2 KiB
PHP

<?php
namespace App\Support;
use Illuminate\Support\Facades\Cache;
/**
* Invalidierung der Web-Auslieferungs-Caches nach Inhalts-Mutationen
* (Meldeverfahren: Korrektur, Anonymisierung, Depublizierung).
*/
class WebCaches
{
/**
* Kompletter Auslieferungs-Cache nach einer Entfernung: Sitemaps UND alle
* Seiten-Caches (Ticker, Startseite, Kategorie-, Newsroom- und Suchlisten).
* Ohne den zweiten Teil bliebe eine entfernte Meldung bis zu einer Stunde
* in gecachten Listen sichtbar.
*/
public static function forgetPublicPages(): void
{
self::forgetSitemaps();
WebPageCache::flush();
}
/**
* Sitemap-Caches aller Hosts verwerfen (SitemapController cached 1h je
* Host) — nach einer Mutation darf kein Cache den alten Stand halten.
*/
public static function forgetSitemaps(): void
{
foreach ((array) config('domains.domains', []) as $domain) {
$host = parse_url((string) ($domain['url'] ?? ''), PHP_URL_HOST);
if ($host) {
Cache::forget('web.sitemap.'.$host);
Cache::forget('web.sitemap-news.'.$host);
}
}
}
}