AlfaLinks
AlfaLinksRegistrieren

Rezept

Backlinks einer Seite über eine API prüfen und korrekt cachen

Unser Index wird einmal im Monat aktualisiert, daher können die meisten Abfragen aus dem Arbeitsspeicher bedient werden. Ein Rezept für Caches, die Credits sparen, ohne den Nutzern veraltete Falschinformationen anzuzeigen.

Stone bridge with three jars of colored sand representing cached backlink data freshness

Die Regel

Cache bis zur nächsten Indexaktualisierung, nicht für eine feste Stunde

Da sich die Daten etwa monatlich ändern, bringt eine stündliche TTL nichts außer Kosten. Ein schlüsselbasiertes Konzept mit Monatsgültigkeit liefert den gleichen Antwortwert den ganzen Monat über und wird mit einem einzigen Schritt ungültig.

  • Schlüssel: Aktion + Domain + Parameter + Indexmonat
  • TTL: bis zum Monatsende, plus ein Tag Gnadenfrist
  • Fehlerantworten niemals cachen

Warum eine kurze TTL nur eine Spende an Ihren Credit-Guthaben ist

Teams, die neu im Umgang mit Linkdaten sind, übernehmen oft Gewohnheiten von Rank-Trackern. Gewohnheit eins: ein stündlicher Cache, weil Positionen sich ändern. Link-Graphen bewegen sich kaum.

Ein backlinks-Aufruf mit 2 Credits kostet 0,0002 $. Das klingt nach wenig, bis eine Listenansicht pro Seitenaufruf 50 solcher Aufrufe auslöst, über 400 aktive Workspaces hinweg, wiederholt jede Stunde für identische Antworten.

Die unten stehenden berechneten Zahlen sind ein Beispiel, keine Messung des tatsächlichen Traffics. Gehen Sie von 400 Workspaces, 20 Domain-Ansichten pro Workspace und Tag, 2 Credits pro Ansicht und einem 1-Stunden-Cache aus, der vielleicht ein Fünftel der Zeit trifft. Die meisten Ansichten treffen immer noch die API. Mit einem Monatsschlüssel würde derselbe Traffic die API nur einmal pro Domain und Monat erreichen, daher ist die Lücke der eigentliche Punkt des Rezepts.

Keyword-Recherche-Tools benötigen frischere Daten, und dafür bleiben die großen Suites die bessere Wahl. Für Link-Kontext ist monatlich das Produkt.

TTL nach Aktion

Vorgeschlagen, nicht vorgeschrieben. Alle Aktionen lesen denselben monatlichen Index.
AktionCreditsVorgeschlagene TTLWarum
Übersicht, Statistiken0Bis zum MonatsendeKostenlos, aber Ihr Server spart dennoch Latenz
bulk_dr1Bis zum MonatsendeGesamte Kundentabelle in einem Aufruf
refdomains, backlinks2Bis zum Monatsende, pro page-ParameterSchließen Sie page, per, sort in den Schlüssel ein
anchors, toppages2Bis zum MonatsendeStabil zwischen den Aktualisierungen
search, keyword37 TageSelten wiederholt, günstiger, das Caching zu überspringen

Anfragebeispiel: Cache für eine Kundentabelle vorbereiten

Rufen Sie bulk_dr einmal pro Kunde auf, nicht einmal pro Zeile. Bis zu 2.000 Domains passen in einen POST-Body und kosten einen Credit.

bash
curl -X POST "https://alfalinks.net/api.php?action=bulk_dr&key=sk_live_..." \
  -d "domains=stripe.com,notion.so,linear.app,figma.com,vercel.com"

# billed once, whatever the row count

Erstellen Sie den Cache in fünf Schritten

Jeder Schritt hat eine Aufgabe. Überspringen Sie einen, zeigt sich der Fehler später, meist in Form einer Rechnung.

01

Wählen Sie den Schlüssel

Verwenden Sie die Aktion, die Domain, die Paging- und Sortierparameter sowie den Indexmonat. Lassen Sie alles weg, was ein Nutzer ändern kann, ohne die Antwort zu verändern, wie z. B. eine Anzeigefarbe oder einen Tab-Namen.

02

Speichern Sie die analysierte Antwort

Bewahren Sie das decodierte JSON mit seinem ok-Flag und den Daten auf, nicht die rohen Bytes. Eine spätere Ansicht kann dann die gesamte Tabelle aus dem Arbeitsspeicher neu aufbauen, ohne einen zweiten Aufruf.

03

Ablauf am Monatsende

Legen Sie das Ablaufdatum auf das Ende des Indexmonats fest, plus den Tag der Gnadenfrist aus der obigen Regel. Verwenden Sie dieselbe Regel für jede Aktion, damit die Logik in einer Funktion lebt und nicht an fünf Stellen.

04

Protokollieren Sie das Guthaben bei jedem Aufruf

Lesen Sie das _credits-Objekt bei jeder authentifizierten Antwort und schreiben Sie das verbleibende Guthaben in Ihr eigenes Protokoll. Ein langsamer Rückgang in dieser Zeile ist oft das erste Anzeichen dafür, dass ein Cache-Schlüssel falsch ist.

05

Beobachten Sie die Trefferquote

Verfolgen Sie, wie oft eine Ansicht aus dem Cache bedient wird. Eine niedrige Rate bedeutet, dass der Schlüssel zu spezifisch ist oder dass Nutzer bei jedem Besuch eine neue Domain öffnen. Beide Erkenntnisse sind nützlich, wenn Sie das Budget planen.

Apples on cork coasters showing harvest date context for freshness

Ist veraltete Daten ein Produktentscheidungsfehler oder ein Bug?

Eine Linkzahl kann einen Monat alt sein und dennoch für den Index, aus dem sie stammt, korrekt sein. Ob Ihr Bildschirm dies anzeigt, ist die eigentliche Frage. Die meisten Support-Tickets zu alten Zahlen sind Beschriftungsprobleme. Labels beheben sie normalerweise.

Weisen Sie jeder Zahl ihren Indexmonat zu. Zeigen Sie ihn den Nutzern an. Sobald sie das Datum sehen können, wirkt die Zahl nicht mehr wie ein defekter Feed, und diese kleine Zeile leistet mehr als eine kürzere TTL jemals könnte.

Wie alt ist eine Linkzahl zu alt?

Unser Index wird etwa einmal im Monat aktualisiert, daher beschreibt eine Zahl, die am ersten Tag zwischengespeichert wurde, denselben Index wie eine, die am letzten Tag zwischengespeichert wurde. Innerhalb des Monats ändert sich nichts an der Antwort. Probleme beginnen, wenn ein Nutzer einen Link von gestern erwartet, und dann ist die Lösung ein klares Label, wie in score labels beschrieben.

Müssen kostenlose Übersichtsaufrufe überhaupt gecacht werden?

Die Übersicht-Aktion kostet keine Credits, daher schützt der Cache hier die Geschwindigkeit und nicht das Guthaben. Ihr Server zahlt für jede Round-Trip, und eine Seite, die fünfzig Mal pro Minute geöffnet wird, wird dies spüren. Speichern Sie auch die kostenlosen Antworten mit demselben Monatsschlüssel, und die Seite bleibt schnell, während Ihr Proxy ruhig bleibt. Die public lookup notes erklären dieselbe Idee für Besucher.

Sollte ein frischer Link den Cache umgehen?

Normalerweise nein. Ein Umgehen kostet Credits für eine Antwort, die wahrscheinlich identisch mit der zwischengespeicherten ist. Wenn ein Kunde darauf besteht, erklären Sie den Indexmonat und bieten Sie einen manuellen Refresh pro Workspace und Monat an, statt einer offenen Schaltfläche, die jeder in einer Schleife drücken kann.

Stampede-Schutz und andere kleine Dinge

  • Single-Flight: Wenn zehn Benutzer dieselbe Domain öffnen, machen Sie einen Upstream-Aufruf und teilen Sie das Promise.
  • Bereiten Sie den Cache am ersten des Monats mit einem Hintergrundjob vor, nicht um 9 Uhr, wenn die Nutzer eintreffen.
  • Speichern Sie die Antwort _credits.remaining und warnen Sie unter einem von Ihnen gewählten Schwellenwert.
  • Cachen Sie das negative Ergebnis 'Domain nicht gefunden' für einen Tag, nicht für einen Monat.
  • Stellen Sie das Cache-Alter in der UI zur Verfügung, damit der Support 'Wann wurde dies abgerufen?' beantworten kann.
Iron hammer and river stones on a workshop bench representing stable caching

Warum ein Cache beim Scraping für Link-Prüfungen besser ist

Teams, die Page-Backlinks in großem Maßstab prüfen müssen, beginnen oft mit Skripten, die Suchmaschinen direkt abfragen. Diese Skripte stocken. Sie sehen am ersten Tag günstig aus, weshalb Teams sie viel länger behalten, als sie sollten. Ein Cache vor einer stabilen API ist normalerweise das günstigere Design mit weniger beweglichen Teilen, die betreut werden müssen.

Der Unterschied zeigt sich mehr in den Ingenieursstunden als in der ersten Rechnung. Halten Sie den Cache langweilig, und die meisten dieser Stunden finden nicht statt.

Warum stocken selbstgebaute Link-Checker ständig?

Suchmaschinen drosseln automatisierte Abfragen, daher kann ein Skript, das für fünfzig URLs sauber läuft, bei fünfzigtausend stocken. Wiederholungen, Proxy-Pools und zufällige Verzögerungen fügen Kosten hinzu, die nicht in einer Credit-Zeile erscheinen, und sie brechen ohne Warnung, wenn sich die Antworten des Ziels ändern.

Wie macht man einen Langzeit-Job neustartbar?

Schreiben Sie jede abgeschlossene Domain während des Prozesses in den Cache. Wenn der Job mittendin stoppt, überspringt ein Neustart jede Domain, die bereits eine gespeicherte Antwort hat, und setzt dort fort, wo er aufgehört hat. Nichts wird für denselben Monat doppelt berechnet, da der Schlüssel die Antwort bereits enthält.

Führen Sie den Job in einem gleichmäßigen Tempo aus, statt in einem Burst. Die Verteilung der Aufrufe hält die Logs lesbar und macht jede Änderung im Credit-Verbrauch leicht erklärbar.

Was kostet eine Liste mit 22.000 URLs mit einem Cache?

Sagen Sie, Sie müssen 22.000 verlinkende URLs für einen Kunden prüfen. Viele davon teilen sich eine Domain, also deduplizieren Sie zuerst zu Domains. Diese 22.000 Links könnten sich auf einige tausend eindeutige Domains reduzieren, und ein bulk_dr-Aufruf nimmt bis zu 2.000 davon für einen einzelnen Credit auf. Speichern Sie jedes Ergebnis nach Domain und Monat, und die Liste ist keine URL-basierte Aufgabe mehr. Halten Sie die Rechnung in einer kurzen Notiz neben dem Job, damit die nächste Person sie mit einer anderen Listenlänge erneut ausführen kann. Eine Zahl mit gezeigter Berechnung ist vertrauenswürdiger als eine Gesamtsumme allein.

Wo dies zusammenhängt

Der Cache ist die Zwischenschicht im counter setup. Sobald er funktioniert, wird die Kosten pro Sitz vorhersehbar und Sie können einen Plan damit preisen mit dem per-seat comparison. Kurze Seiten verdienen ein klares Ende. Diese hat es.

Cache-Fragen, die wir im Code-Review sehen

Sollte der Cache auch im Browser leben?

Ein kurzer Browser-Cache hilft bei der Navigation mit der Zurück-Schaltfläche, aber der gemeinsame Cache auf Ihrem Server spart das meiste. Halten Sie die Client-seitige Speicherung auf Minuten, da Nutzer an verschiedenen Maschinen sonst unterschiedliche Zahlen für dieselbe Domain am selben Tag sehen würden.

Was, wenn ein Kunde sagt, ein neuer Link fehle?

Prüfen Sie den im UI angezeigten Indexmonat. Wenn der Link nach der letzten Aktualisierung hinzugefügt wurde, erscheint er nach der nächsten. Bieten Sie eine Notiz an, keine Rückerstattung, da nichts kaputt ist.

Kann ich den Cache auf Anfrage umgehen?

Sie können, aber jeder Umgehen kostet Credits für eine Antwort, die wahrscheinlich identisch ist. Bieten Sie es nur Admins an und drosseln Sie es pro Workspace, um versehentliche Schleifen zu vermeiden.

Paginierung und der Cache-Schlüssel

Paginierung beißt jeden einmal. Schließen Sie sie in den Schlüssel ein.

Die Aktionen backlinks und refdomains geben bis zu 1.000 Zeilen pro Aufruf zurück, mit page und per zwischen 10 und 5000, und tiefes Paging ist auf 50.000 Zeilen begrenzt, daher wird ein Schlüssel ohne diese Parameter Seite eins für jede Anfrage bedienen.

Sortierung gehört ebenfalls in den Schlüssel. Ein Nutzer, der von absteigender DR zu alphabetisch wechselt, erwartet eine andere Liste, und der Cache muss dies erfüllen, ohne einen neuen Upstream-Aufruf, wenn der vollständige Satz bereits gespeichert ist.

Ein schneller Test fängt die meisten Schlüssel-Fehler ab. Fordern Sie Seite zwei an, ändern Sie die Sortierung und prüfen Sie dann, ob die zwischengespeicherte Seite zwei von der zwischengespeicherten Seite eins abweicht. Wenn nicht, fehlt ein Parameter im Schlüssel. Früh gefunden, kostet es Minuten. Ein Kunde sieht es nie. Führen Sie den Test vor jedem Release erneut durch, da eine neue Sortierungsoption der übliche Grund ist, warum der Schlüssel bricht. Schreiben Sie ihn in Ihre Release-Checkliste.

Planen Sie die Export-Schaltfläche separat: ein Hintergrundjob, eine gespeicherte Datei und eine Benachrichtigung, wenn sie bereit ist.