Signal Shingle-:-eine neuartige Architektur für hochleistungsfähige ASP-MSC2-NET Multi---Widget-Standorte
Teil der Stylo-Versionsserie .-Bot Verhalten Bewusst WERDEN deckt die Oberfläche des Servers aus dem Armaturenbrett ab Ungebundenes Wachstum finden und fixieren deckt die Zuverlässigkeitsdisziplin hinter begrenztem Zustand ab Schneller lernen deckt die früheren adaptiven --Cache-Arbeiten ab
Wie liefern Sie schnelle Antworten für komplexe Dashboards, ohne verrückt zu gehen??-Sie stoppen das Rendering auf dem Request Pfad..
Das Problem: ,: , per .- , request fan , - ,out
Ein Dashboard ist eine täuschend teure Art von Seite.Es sieht aus wie ein URL.,, aber es ist wirklich eine Kompositionsmaschine mit einer Seite.

Kommen bald in Stylo-.-Bot
Signal Shingle ist die kommende Dashboard-Architektur.Das eingesetzte Armaturenbrett oben ist die aktuelle Oberfläche, seine Multi--...Widget Form ist das Problem, das dieses Design löst.
Der Bediener sieht ein Dashboard, der Server sieht langsame, sich bewegende Aggregate und teure Fensteransichten.
flowchart TB
P[One dashboard page] --> H[Headline counters]
P --> T[Time-series chart]
P --> B[Top bots]
P --> E[Top content pages]
P --> C[Countries / filters]
H --> M[Shared hydrated page model]
T --> M
B --> M
E --> M
C --> M
M --> S[Versioned widget shingles]
S --> U[Independent HTMX OOB updates]
classDef outline stroke:#cbd5e1,stroke-width:1.5px;
classDef emphasis stroke:#38bdf8,stroke-width:2px;
class P,H,T,B,E,C,M,S,U outline;
class M,S,U emphasis;
linkStyle default stroke:#94a3b8,stroke-width:1.3px;
Die vertraute ASP-.-NET-Implementierung hat jedes Widget holt seine eigenen Daten.,. Startet diese Anrufe parallel, und dann wartet es auf alle von ihnen, bevor die Seite rendern.
flowchart LR
R[One page request] --> W1[Summary query]
R --> W2[Time-series query]
R --> W3[Countries query]
R --> W4[Endpoints query]
R --> W5[Bot query]
W1 --> J[Task.WhenAll]
W2 --> J
W3 --> J
W4 --> J
W5 --> J
J --> V[Render response]
classDef outline stroke:#cbd5e1,stroke-width:1.5px;
classDef danger stroke:#fb7185,stroke-width:2px;
class R,W1,W2,W3,W4,W5,V outline;
class J danger;
linkStyle default stroke:#94a3b8,stroke-width:1.3px;
Es sieht mit einer Person und einem kleinen Datensatz schnell aus...... etwa zehn unabhängige Anrufe überlappen sich, also dauert die Seite ungefähr so lange wie ihr langsamstes Widget anstatt ihre Summe..
Auf der Stylo-.-Bot Dashboard: Eine normale Seitenlast bedeutete rund zehn parallele Anrufe über die Website./.Gateway-Grenze.. Die Tagesansicht konnte mehr als eine Million Zeilen scannen..... Eine einzelne stille Last war bereits multi--.Sekunde..Unter gleichzeitigem Verkehr ging die p.MSC8. nach sieben Sekunden, weil jeder Besucher auf , wartete und um zehn teure Operationen begann...
Parallelität ist nützlich ,. , Per .- , request fan , - , out ist das Problem bei fünf gleichzeitigen Zuschauern , um zehn Anrufe wird rund fünfzig konkurrierende Anrufe , . , Bei fünfzig Zuschauern wird es etwa fünf hundert , und die Datenbank-Verbindungspool sieht einen wachsenden Sturm von unabhängig teuren Arbeit ,. , Anfragen verlangsamen , , , halten Verbindungen länger ... und verlangsamern Sie die nächsten Anfragen weiter .... ,
Parallel-Fan---out macht eine einzelne Anfrage aussehen schneller durch Multiplizieren des Drucks, der das System unter Last zerstört
Dies ist die falsche Skalierungskurve für ein Dashboard-Dashboard Ein Armaturenbrett ist eine gemeinsame Beobachtungsoberfläche.Es sollte billiger werden, da mehr Leute das gleiche Ding betrachten.
Normales Multi---Widget-Dashboard Signal Shingle Dashboard |---|---| Jede Anfrage startet ihren eigenen Daten-Fan.-Ausgang.MSC2Ausfragen lesen Sie eine fertige Projektion. Jedes Widget kann altern und unabhängig scheitern Widgets stammen aus einer Generation Mehr Zuschauer schaffen mehr Datenbank-Arbeit Mehr Zuschauer teilen erwärmte Modelle und Schindeln Beladung verlangsamt die Reaktion selbst Beladungsstrecken aktualisieren Trittfrequenz, während die Reaktionen schnell bleiben
Das Armaturenbrett ist bei einem Bot-Übergang oder einem Zwischenfall am wertvollsten, gerade wenn der Datenpfad unter Druck steht... Die Architektur optimiert daher zuerst für Stabilität.:. ein schneller, kohärenter Snapshot mit explizitem Alter ist nützlicher als eine theoretisch frischere Seite, die langsam ist.MSC6. teilweise oder nicht verfügbar.
Die Lösung: Signal Shingle
Signal Shingle behandelt jedes Dashboard-Widget als ein Pre---Rendered-,-Self---Inclusive-Seite Fragment..-Seine Identität sind die Daten, die es repräsentiert und wie es gerendert wird, :-Wedget-,-Reihe,-Fenster, Filter und Anzeigeparameter, .-Refresh Kadenz ist bewusst nicht Teil dieser Identität.
Sein Fingerabdruck ist einfach widget + normalised parameters + data-surface generationEin Land-Update sollte eine Live-Karte nicht ungültig machen, ein geänderter Filter sollte nicht jedes andere Widget kalt machen, eine neue Generation nur die betroffenen schingle-.
Diese Fragmente leben in einem begrenzten LFU-Cache... Warm liest halten beobachtete Widgets wohnhaft.;. one.MSC2.off Filterkombinationen verlieren natürlich.
SignalR sagt eine Oberfläche änderte sich .; , fragt der Client nach dem betroffenen Widget Batch . HTMX wendet die zurückgegebene aus den Fragmenten des - mit IdiomorphDas Signal trägt einen schmutzigen Hinweis.... nie eine Kopie der Dashboard-Daten....
Im Muster: Signal bedeutet "erfrischend" (MSK) Schindel ist das unabhängig adressierbare Ergebnis
Die Architektur trennt den Response-Kontrakt von refresh work.Die Antwort ist statisch.-.like:. ein schneller, kohärenter Snapshot aus dem Cache... Die dynamische Seite ist ein separater, budgetierter Prozess, der geänderte Fragmente aktualisiert und liefert.MSC6. Load kann das Auffrischen verlangsamen, ohne die Seitenantwort zu verzögern.
Render--'sidside Schindeln allein sind unzureichend..' Wenn jedes Miss einen frischen Datenbankscan auslöst, bleibt die teure Arbeit übrig.MSC3's Signal Shingle verwendet einen zweistufigen Cache mit einer bewusst schmalen Hand.
flowchart LR
D[Gateway<br/>authoritative events] --> B[Incremental window buckets<br/>data stays single-source]
B --> C[Delivery cache 1<br/>hydrated page result]
C --> S[Delivery cache 2<br/>versioned OOB widget HTML]
S --> R[Request path<br/>read + Razor shell]
T[Schedule tick/poll + LFU demand] --> W[Bounded prewarm waves]
W --> B
W --> C
X[Coalesced SignalR dirty beacon] --> U[HTMX batch update]
U --> S
classDef outline stroke:#cbd5e1,stroke-width:1.5px;
classDef emphasis stroke:#38bdf8,stroke-width:2px;
class D,B,C,S,R,T,W,X,U outline;
class C,S,W emphasis;
linkStyle default stroke:#94a3b8,stroke-width:1.3px;
Datenprojektion und Bereitstellung von Caches
Die Unterscheidung besteht darin, Modell und es wird gemacht Widget-LiefereinheitenKein Cache wird zu einer Behörde für die Erkennung von Daten.
Datenprojektion, inkrementelle Eimer
Das Gateway besitzt die data-.. Es hält einen begrenzten , in ,- , memory LFU Projektion von den inkrementellen , fensterierten Eimern mit einer gleitenden Aufbewahrung , : , einem Arbeitssatz , nicht ein zweiter Datastore , . ,
Verwenden Sie feine Eimer für six---Stunden und 24--Stunden-Charts, ,-Stündliche Rollups für lange Fenster. .-Der Punkt ist, dass ein angefordertes Fenster Eimer anstatt wieder --Lese Rohereignisse zusammenführt.
last 24 hours → merge 288 five-minute buckets
last 30 days → merge 720 hourly buckets
not
last 30 days → scan and aggregate 1,000,000+ event rows again
Neuer Beobachtungsaktualisierung des neuesten Eimers.-Der historische Teil wird nicht neu gecannt, weil eine Seite geladen wurde..-Das Gateway bleibt der einzige Schreiber und der einzige Ort, der entscheidet, was eine Detektion bedeutet.
Liefercache Das hydratisierte Content-Modell
Upstream-, , die Website zwischengespeichert Hydrated Dashboard Modelle ,, , geschlüsselt durch normalisierte Widget-Set , , , Fenster , , , Filter und Generation ,. , Es überbrückt autoritative Daten und Rendering
Caching ein Modell statt voller HTML hält CSRF-Werte ., .Authentifizierung Chrom . , . Feature Flags und Nonces auf der Anfrage . - .rendered Shell, wo sie gehören .
Auf einem kalten Schlüssel geben Sie einen klaren Erwärmungszustand zurück, anstatt synchron zu rekomputieren.Nur der Zeckenmaterialisierer verdient ein neues Seitenergebnis..... Später liest man die neueste erfolgreiche Generation...,... auch während ein neuer im Flug ist...
Bereitstellungscache Der Schindel-Render-Cache
Das Dashboard ist bewusst geteilt ,: , das Gateway besitzt Daten , ; , die Website besitzt Razor und der Browser-Beziehung , . , Delivery cache , und liefert winzige Updates lokal ohne zu einem konkurrierenden Data Store .; , es enthält nur versionierte HTML abgeleitet von dem Gateway ,- ,backed Page Model ,
Sobald ein Seitenmodell existiert, kann ein Widget als OOB-Element gerendert werden und im begrenzten LFU-Schindelcache mit Sicherheit gehalten werden.TTL...Eine warme Schindel umgeht sowohl die Zusammensetzung als auch das Razor Rendering.;. ein Fehl liest das bereits angezeigte Ergebnis der -.warm wo möglich.,. Rendert nur dieses Widget.MSC5. hx-swap-oob="morph"Das Ergebnis wird unter seinem Fingerabdruck gespeichert.
Die Batch-Endpunkt-Partitionen Widgets in warmen Fingerabdrücken und misses.,...komponiert die unterstützten Misses sobald ,, , dann gibt OOB HTML ,. , Eine Zusammenfassung oder Länder ändern re...
Dies ist nicht redundant Caching-.-Liefercache Antworten auf 1-Antworten Was ist das kohärente Dashboard-Modell??”-Zustellungscache Antwort auf “-Was DOM-Insel kann dieser Browser empfangen?MSC6-Die erste macht die Zusammensetzung teilbar.;-Die zweite macht teilweise Updates fast kostenlos.
Cache boundary:-, warum dies nicht Antwort caching
Response Caching ist es wert, direkt zu vergleichen – ein normaler Responsive-Cache speichert eine undurchsichtige HTTP-Antwort – ;.Unabhängig zwischengespeicherte Widgets entwickeln unabhängige Ablauf- und Ausfallmodi... Die Seite kann schnell laden, ohne einen kohärenten Zustand zu beschreiben – MKK3. Auf einem operativen Dashboard wird eine Anzahl angezeigt, die mit den darunter liegenden Zeilen nicht übereinstimmt.
Die bekannten Caching-Muster sind alle nützlich... sie schützen einfach verschiedene Grenzen...
Was es speichert, was es am besten passt, warum es von selbst hier nicht ausreicht |---|---|---|---| | HTTP-Antwortspeicher Eine HTTP-Antwort, die normalerweise von URL und Request geschlüsselt wird.- various rules.... öffentliche GET-Endpunkte und CDN.- friendly content.... es weiß nichts über das interne Widget des Dashboards, oder ob ihre Daten mit . einverstanden sind. | Ausgabe-Cache für ASP-.-NET ,® Generierter Server-Ausgang mit expliziter Varieté- und Räumungsrichtlinie |® Teuere Seiten mit kleiner, stabiler Anfrage -® Schlüsselraum |® Es kann die Seite schnell zwischenspeichern ,® aber es ist immer noch ein undurchsichtiges Seitenergebnis anstatt eine koordinierte Live-Projektion .® Ein gecachetes Gehäuse mit dynamischen Löchern ,, , oder unabhängig zwischengespeicherte Fragmente , | , Seiten, deren Chrom stabil ist und deren kleine dynamische Regionen wirklich unabhängig sind .| , Es macht jedes Loch zu einem eigenen Cache-Lebenszyklus, das genau ist, wie ein Dashboard intern inkonsequent werden kann ,. , | , Signal Shingle Ein hydratisiertes ,-Generation-Gestempeltes Seitenmodell plus versionierte Widget-Lieferfragmente Ein Dashboard, dessen Teile unabhängig aktualisiert werden müssen und fortfahren, einen Zustand zu beschreiben Die Cache-Grenze ist die zusammengesetzte Projektion Die Schindeln werden von ihr abgeleitet.
Höhe: -2, Schindeln sie werden ein Ausgabecache – bewusst klein und Fragment – - – geformt. – Der Unterschied besteht darin, dass Fragmente nicht unabhängig von der Datenrealität entscheiden.. – Das Content-Modell wird zuerst unter einer Generation zusammengefügt.MSC5 – jeder Schindel ist eine Rendering dieses Modells –' – Slice. –
flowchart LR
D[One authoritative<br/>gateway dataset] --> G[Generation 184]
G --> M[One hydrated<br/>page model]
M --> H[Headline shingle<br/>generation 184]
M --> T[Chart shingle<br/>generation 184]
M --> B[Bot-list shingle<br/>generation 184]
M --> C[Country shingle<br/>generation 184]
H --> P[One coherent page]
T --> P
B --> P
C --> P
classDef outline stroke:#cbd5e1,stroke-width:1.5px;
classDef emphasis stroke:#38bdf8,stroke-width:2px;
class D,G,M,H,T,B,C,P outline;
class G,M,P emphasis;
linkStyle default stroke:#94a3b8,stroke-width:1.3px;
Wenn sich die Daten ändern, erhält die betroffene Zusammensetzung eine neue Generation.Ein Browser kann kurz das vorherige sehen, während ein Update im Flug ist.,... aber dieses Alter ist explizit und begrenzt.
Eine Autorität, eine komponierte Generation, viele wiederverwendbare Lieferung Fragmente, .
SSR erste ., . progressive Verbesserung second
Signal Shingle ist nicht eine JSON API mit einem Client-Dashboard auf der Oberseite lackiert . Razor SSR zuerst ,: , sinnvolle Zähler , , Charts , , , Tabellen , Links und Navigation vor JavaScript läuft , HTMX , SignalR und Alpen dann verbessern Sie diese Seite, anstatt sie zu ersetzen.
flowchart LR
R[GET dashboard] --> S[Razor SSR<br/>complete useful HTML]
S --> V[Operator can read<br/>and navigate now]
S --> H[HTMX enhancement]
S --> A[Alpine enhancement]
S --> G[SignalR enhancement]
G --> D[Dirty beacon<br/>not dashboard JSON]
D --> H
H --> O[GET OOB widget batch]
O --> W[Versioned HTML shingles]
W --> M[HTMX / Idiomorph morph]
A --> I[Local UI state<br/>menus, filters, affordances]
classDef outline stroke:#cbd5e1,stroke-width:1.5px;
classDef emphasis stroke:#38bdf8,stroke-width:2px;
class R,S,V,H,A,G,D,O,W,M,I outline;
class S,W,M emphasis;
linkStyle default stroke:#94a3b8,stroke-width:1.3px;
Der Browser-Stack
Razor Rendert die Seite auf dem Server HTMX Anfragen und Swaps HTML-Inseln SignalR trägt kleine Änderungs-Beacons Alpen besitzt lokalen Interaktionszustand. Idiomorph aktualisiert eine Insel bei der Erhaltung stabiler DOM-Knoten wie Fokus und Schwebezustand
Entfernen Sie eine von ihnen und die SSR-Seite bleibt nützlich, um alle drei hinzuzufügen, und es gewinnt live, , low .- . churn updates .
Warum dies kein Client-Dashboard ist
Der primäre Grund ist einfach Das Dashboard muss für jeden Client nützlich sein, ohne JavaScript zu benötigen Ein Browser mit deaktivierten Skripten Eine langsame Verbindung ,Ein assistierender Client,Ein Automatisierungswerkzeug oder ein Crawler erhält immer noch aussagekräftige HTML-Verbindungen,.
Ein Client-Dashboard ist eine gute Passform, wenn reicher lokaler Anwendungszustand das Produkt ist.Es würde dieses Dashboard abhängig von JavaScript verlassen, bevor es Daten anzeigen kann......Es würde auch entweder die Kompositionslogik im Browser neu erstellen oder die Browserkoordinaten-Widget-APIs machen.......
Kunden-Dashboard mit dem Signal Shingle Dashboard (MSK) |---|---| Browser holt JSON und besitzt gerenderten Ansichtszustand.Server komponiert das Modell und rendern HTML-Browser verbessert es. Client versöhnt unabhängige Antworten,-Ladezustände und veraltete Daten Server-Marken eine kohärente Generation vor der Auslieferung Erster nützlicher Inhalt hängt von JavaScript und API-Vervollständigung ab. 1. nützlicher Inhalt ist SSR HTML. Am besten, wenn ein reicher lokaler Anwendungszustand das Produkt ist.Das Beste, wenn das Dashboard eine gemeinsame operative Projektion ist.
Das Design hält das Dashboard universal standardmäßig für die Gateway-Daten und -Zusammensetzung auf dem Server.,. Seite Rendering auf der Website und optionaler Kurztext.-.lived Interaktionszustand im Browser.
Aktualisieren ist ein geplanter Job, nicht eine zufällige Nebenwirkung von dem Verkehr
Aktualisieren geschieht außerhalb der Seitenanfrage ,. , Dies ist eine harte Grenze , : , ein kaltes Leseergebnis gibt ein erwärmendes Ergebnis wieder , während nur die Zeckenmaterialisierer komponiert .. , Die Seitenanforderung ist ein Lesen einer kohärenten Projektion , , , nie eine Entschuldigung für teure Datenarbeit beginnen
Der Koordinator Warteschlangen gepinnt und vor kurzem ,- ,read Umschläge , , , dann erwärmt sie in begrenzter Wellen mit einer Seite .- ,count and wall , - ,clock budget , . , innerhalb einer Welle chargt es kompatible Arbeit ?; , ein gemessenes Kosten-Budget kann spätere Wellen ganz stoppen , das ist nicht Task.WhenAll trägt einen neuen Namen
Die Concurrency-Grenze ist Teil der Korrektheit, die Refresh-Schleife erhält ein bekanntes Kapazität Budget, nicht eine unbeschränkte Menge von Verbindungen, keine Komposition oder Razor-Rendering.
Orchestriert... nicht ein Sturm... Das ist die Betriebsregel.
Vorwarnung ist covery-,-nicht Wunsch caching
Ein Cache kann die erste Anforderung nicht schützen, wenn er nur erwärmt nach dass die Anfrage ankommt... also hat der Materialisierer zwei Jobs.... Geheftete Voreinstellungen halten Sie die realen 6-H-,- -24-h-,-M7-d und 30-D Fenster Entscheidungen warm Nachfrage---gated Umschläge Abdeckung Filter, die Leute tatsächlich verwenden, wird nach Zugriffszahl und Recentcy geordnet... Nur eine echte Anfrage hält einen live.
flowchart TB
P[Pinned default windows<br/>6h · 24h · 7d · 30d] --> Q[Warm queue]
L[Recently read filtered views<br/>LFU hotness order] --> Q
Q --> G{Tick budget<br/>still available?}
G -->|yes| W[Bounded warm wave<br/>compose once, store model]
G -->|no| N[Defer to next tick<br/>serve prior generation]
W --> H[Delivery cache 1<br/>hydrated page model]
H --> Z[Delivery cache 2<br/>rendered on demand]
classDef outline stroke:#cbd5e1,stroke-width:1.5px;
classDef emphasis stroke:#38bdf8,stroke-width:2px;
class P,L,Q,G,W,N,H,Z outline;
class Q,W,H emphasis;
linkStyle default stroke:#94a3b8,stroke-width:1.3px;
Vorwärmen muss mit der realen Produktoberfläche übereinstimmen..-Wenn die Benutzeroberfläche vier normale Fenster bietet und der Wärmer eins weiß, sind drei Viertel des erwarteten ersten --Klickpfades noch kalt..
LFU ist nicht nur Räumung, es ist das Nachfragesignal
LFU ist mehr als die Räumung hier..-Zugang ist das Nachfragesignal, das :- sie entscheidet, was bleibt wohnhaft, ,- welche Arbeit erfrischt zuerst und was kann sicher verschwinden?.-Das macht ungebundenen Filterraum überschaubar.MSC5-Ein Landfilter beobachtet den ganzen Tag hält warm.;-ein Filter einmal ausprobiert alters out messK7-Keine separate ...“-populäre Dashboard messk9-Tisch wird benötigt.
Stabilität unter Druck
Traditionelle Live-Dashboards reagieren auf mehr Verkehr, indem sie mehr Arbeit tun., , dann werden am wenigsten nützlich an der Stelle Operatoren die meisten benötigen sie.MSC1 , Signal Shingle kehrt zurück, dass Beziehung ,. , Der refresh Controller misst Auffrischung Kosten gegen ein Budget , ; , teure Zyklen dehnen effektive Intervalle ?, , billiger Vertrag in Richtung der geforderten Kadenz , . ,
refresh cost <= budget → preserve requested cadence
refresh cost > budget → lengthen effective cadence
cost settles → cautiously shorten it again
Dies ist eine geschlossene Schleife auf dem geschützten ressource- - , , keine Vermutung von rohen RPS-. Unter Last bewegt sich das System in Richtung zu einem statischen Snapshot anstatt mehr Datenbankarbeit zu erstellen, um ein unmögliches Versprechen der Lebendigkeit aufrecht zu erhalten.
Laden macht das Dashboard weniger arbeiten ., , nicht mehr . . Aus diesem Grund degradiert sich das Muster statt Einbrüchen .
Es ist die letzte bekannte zusammenhängende Projektion, die von einer Frischepolitik begrenzt und ehrlich gekennzeichnet wird.
Statisch und dynamisch durch Design
Die Trennung oben gibt dem Dashboard einen schnellen Antwortvertrag und ein separates budgetiertes Refresh-Verfahren..-Scheduler.--getriebene Due Checks.,-optional SignalR Beschleunigung für Live-Widgets und reconnect resync halten den dynamischen Seitenstrom..-Die Reaktion bleibt schnell, auch wenn der Snapshot älter wird.MS K4-und das Alter sichtbar bleibt.MSC5-
So kann das System kontinuierlich zwischen zwei nützlichen Modi gleiten.
quiet / cheap refreshes → dynamic dashboard, short effective cadences
busy / expensive refreshes → static-like snapshot, longer declared cadences
Das ist eine adaptive Skalierung, die in die Architektur eingebaut wurde... kein Panikschalter hinzugefügt, nachdem der Pool fehlschlägt.
Frische gehört zu dem Widget.:, ein nichthandelbares Invariant.
Nicht jedes Widget verdient die gleiche Frische Ein Trenddiagramm oder Endpunkt-Ranking kann Minuten oder eine Stunde dahinter sein ,; , eine Liste der jüngsten Besucher oder aktuelle Punkte benötigt eine engere Kadenz , . , Die Kadenz lebt mit dem Widget ,' , Frischeklasse , .
| Klasse - Typische Widgets - Basiskadenz - Basis-Kadenzenz - Warum - | - | |
|---|---|---|
| Zusammenfassung , trends, Countries, endpoints | minutes to a hour Das Signal ändert sich langsam genug, dass Stabilität wertvoller ist als Churn. . | |
| , Live-MSK1, aktuelle Besucher,, Sessions,, Namen,, Punkte ,, Bedrohungen | , um eine Minute | , der Bediener sucht nach aktuellen Bewegungen., |
Zwei sichtbar identische Widgets können nach verschiedenen Kadenzen fragen . . . . Setzen von Trittfrequenz in den Cache-Schlüssel Duplikate data . ; . die Annahme der ersten Trittfrequenz kann einen späteren Verbraucher verlassen stale .
Das Invariant ist einfach.
Ein gemeinsam genutzter Cache-Eintrag darf niemals staler dienen als jeder seiner aktiven Verbraucher, um den es gebeten wurde.
Förmlich
effective cadence(entry) = MIN(requested cadence of every active consumer)
Cadence ist ein Per---Konsumer BodenNicht Teil der Signatur, wenn ein Verbraucher für 5 Minuten und ein anderer fragt, erfrischt sich jeder gemeinsame Eintrag, wenn der schnelle Verbraucher verlässt, das Minimum, wenn keine Verbraucher bleiben,,. Stoppen Sie die Terminplanung und lassen LFU es zurückfordern.
Ein aktiver Verbraucher ist ein kurzes ,-...lived ,,...Erneuerbare Nachfrage-Leasing durch eine reale Anfrage erstellt , .... Fortsetzung liest Erneuerung it , ;... Ablauf ist Abfahrt ,.... Der Scheduler enthält nur Live-Lease, wenn er die minimale Kadenz berechnet .....
Ehrliche Chrom und Konsistenz Regeln
Ein adaptives System sollte ehrlich über seine Anpassung sein.. , Widget Chrom zeigt die aktuelle effektive Kadenz ,: , “ , jede Aktualisierung , 60 , ”, , und jede Aktualisierung 5, m”, , “ , Daten ab ,10:42”. ,
Es gibt ein paar Regeln notwendig, um eine Projektion ehrlich zu halten.
- Marken für die Erzeugung Jedes Stück/'shingle zeichnet die Datengenerierung auf, die es gebaut wurde..' Die Beacon- und Response-Generierungsstempel werden verglichen, damit ein älteres Update eine neuere Ansicht nicht überschreiben kann.
- Gekohlte Signale.- Ein geschäftiger Detektor kann viele Ereignisse pro Sekunde erzeugen.Der Signalpfad lädt sie in ein schmutziges Beacon und eine Aktualisierungsentscheidung ein, anstatt den Browser oder die Refresh-Loop zu feuern.
- Resync beim erneuten Verbinden Ein Reconnect wird nicht als Beweis behandelt, dass nichts passiert ist...Ein Due--.check schließt die verpasste -.pulse Lücke deterministisch...
- Gebundene TTL-Rückfall Ein erhaltener Klumpen darf nicht unsterblich werden, sobald er die Klasse überschreitet, die an MSK gebunden ist und nicht auffrischen kann, wird es kalt.
- Kein Inhalt Leckage Live-Schingeln können Namen enthalten.,-Fingerabdrücke oder Partituren. .-Ihr Inhalt bleibt im Speicher.MSC2- sind nicht protokolliert und jede Diagnose ändert sie standardmäßig.
Das Ziel ist nicht instant consistence-Beobachtbarkeit Es ist eine Projektion, deren Alter und Generation begrenzt sind.
Vorteile und Handel
Die Vorteile sind strukturell stabile Anfrage Latency-Latenz-,... eine kohärente Seitengeneration... gemeinsame Arbeit für populäre Ansichten... und nützliche SSR ohne JavaScript... das System dient einer ehrlichen älteren Projektion, anstatt jede Seite in mehr Datenbankdruck umzuwandeln.
Diese Architektur fügt einen Scheduler hinzu.,.Cache-Keys.MSC2. Generierungs-Tracking: ,. Nachfrageleasing und Beobachtbarkeit, die ein normaler Controller nicht benötigt...Eine kalte gefilterte Ansicht kann einen Erwärmungszustand zeigen, bevor es live wird.MS K5.Betreiber müssen akzeptable Frischegrenzen wählen, anstatt vorzugeben, dass jede Oberfläche echte -.time Daten benötigt.
Es ist eine schlechte Passform für ein write---schweres, tief personalisiertes Programm, bei dem jede Antwort einzigartig ist, oder für eine Oberfläche, die wirklich jeden Benutzer benötigt, um jede Änderung sofort zu sehen.Es ist eine starke Passform für geteiltes, ,-lese---schwere Operations Dashboards, wo schnelle und kohärente Beobachtung zählt mehr als vorgeben, dass jede Zahl augenblicklich ist.
Signal Shingle komponiert vertraute ASP-.-NET-Stücke, :, ein LFU-MSC2, SignalR.,, Batched Composition, ,, Razor, ,, HTMX und einen Scheduler mit echtem Concurrency-Budget.MSC6, Das Gateway bleibt maßgeblich, die Website dient einer Projektion, MSSK8, der Browser erhält kleine versionierte Fragmente,.,
Das Dashboard bleibt schnell, weil die Beobachtung keine Berechnung mehr verursacht.