Kontrollera sidors backlänkar via ett API och cacha det på ett ärligt sätt
Vårt index uppdateras en gång i månaden, så de flesta förfrågningar kan betjänas från minnet. Ett recept för cachar som sparar krediter utan att visa användarna föråldrade felaktigheter.
AlfaLinks redaktionella team ·
Regeln
Cacha tills nästa indexuppdatering, inte under en fast timme
Eftersom data ändras ungefär en gång i månaden ger en timme lång TTL inget värde utöver kostnad. En nyckel som är kopplad till månaden ger samma svar hela månaden och ogiltigförklaras vid en enda uppdatering.
Nyckel: åtgärd + domän + parametrar + indexmånad
TTL: tills månaden tar slut, plus en dag nåd
Cacha aldrig ett felmeddelande
Varför en kort TTL bara är en donation till ditt kreditbalans
Team som är nya på länkdatabas kopierar ofta vanor från rankningsverktyg. Van nummer ett: en timme lång cache, eftersom positioner ändras. Länkgrafer ändras nästan inte.
Ett backlinks-anrop som kostar 2 krediter kostar $0,0002. Det låter som ingenting förrän en listvy skickar 50 sådana anrop per sidvisning över 400 aktiva arbetsområden, upprepade varje timme för identiska svar.
De uträkningar som följer är ett exempel, inte en mätning av någon trafik. Anta 400 arbetsområden, 20 domänvisningar vardera per dag, 2 krediter per visning och en 1-timmars cache som träffar kanske en femtedel av tiden. De flesta visningar träffar fortfarande API:et. Med en målnyckel skulle samma trafik bara nå API:et en gång per domän och månad, så gapet är hela poängen med receptet.
Nyckelordsforskningsverktyg behöver färska data, och för dem är de stora paketen fortfarande det bättre valet. För länkkontext är månatlig data produkten.
TTL per åtgärd
Föreslaget, inte obligatoriskt. Alla åtgärder läser samma månatliga index.
Åtgärd
Krediter
Föreslagen TTL
Varför
översikt, statistik
0
Tills månadens slut
Gratis, men din server sparar fortfarande latens
bulk_dr
1
Tills månadens slut
Hela kundtabellen i ett anrop
refdomains, backlinks
2
Tills månadens slut, per sidparam
Inkludera sida, per, sort i nyckeln
ankertextar, toppsidor
2
Tills månadens slut
Stabilt mellan uppdateringar
sök, nyckelord
3
7 dagar
Sällan upprepat, billigt att hoppa över cachelagring
Förfrågansexempel: värma cachen för en kundtabell
Anropa bulk_dr en gång per kund, inte en gång per rad. Upp till 2 000 domäner får plats i en enda POST-body och kostar en kredit.
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
Bygg cachen i fem steg
Varje steg har en uppgift. Hoppa över ett och felet visas senare, oftast som en faktura.
01
Välj nyckeln
Använd åtgärden, domänen, sidnings- och sorteringsparametrarna samt indexmånaden. Lämna ut allt som en användare kan ändra utan att ändra svaret, som en visningsfärg eller ett fliknamn.
02
Lagra det parserade svaret
Behåll den dekoderade JSON:n med dess ok-flagga och data, inte de råa byte. En senare vy kan då bygga om hela tabellen från minnet utan ett andra anrop.
03
Uppdatera vid månadens slut
Ställ in utgången till slutet av indexmånaden, plus nåddagen från regeln ovan. Använd samma regel för alla åtgärder, så att logiken finns i en funktion och inte på fem ställen.
04
Logga balansen vid varje anrop
Läs _credits-objektet i varje autentiserat svar och skriv den återstående balansen till ditt eget logg. En långsam minskning i den raden är ofta det första tecknet på att en cachenyckel är fel.
05
Övervträff hit-raten
Spåra hur ofta en vy betjänas från cachen. En låg hit-rate betyder att nyckeln är för specifik, eller att användarna öppnar en ny domän vid varje besök. Båda fynden är användbara när du planerar budgeten.
Är föråldrad data ett produktval eller ett fel?
En länksiffra kan vara en månad gammal och fortfarande vara korrekt för det index den kommer från. Frågan är om din skärm säger det. De flesta supportärenden om gamla siffror handlar om etiketteringsproblem. Etiketter löser dem vanligtvis.
Ge varje siffra dess indexmånad. Visa den för användarna. När de kan se datumet slutar siffran att se ut som en trasig flöde, och den lilla raden gör mer än en kortare TTL någonsin kan.
Hur gammal är för gammal för en länksiffra?
Vårt index uppdateras ungefär en gång i månaden, så en siffra som cachelagrades på första dagen beskriver samma index som en som cachelagrades på sista dagen. Inget i svaret ändras inom månaden. Problem uppstår när en användare förväntar sig en länk från igår, och då är lösningen en tydlig etikett, som beskrivs i score labels.
Behöver gratis översiktsanrop en cache alls?
Översiktsåtgärden kostar inga krediter, så cachen här skyddar hastighet snarare än balansen. Din server betalar fortfarande för varje rundresa, och en sida som öppnas femtio gånger i minuten kommer att känna det. Lagra även de gratis svaren, med samma månadnyckel, så att sidan förblir snabb medan din proxy förblir tyst. Noteringar för offentlig sökning förklarar samma idé för besökare.
Ska en färsk länk någonsin kringgå cachen?
Vanligtvis nej. Ett kringgående kostar krediter för ett svar som troligen är identiskt med det cachade. Om en kund insisterar, förklara indexmånaden och erbjuda en manuell uppdatering per arbetsområde och månad, snarare än en öppen knapp som någon kan trycka i en loop.
Skydd mot stampede och andra småsaker
Enkel flygning: om tio användare öppnar samma domän, gör ett enda upstream-anrop och dela löftet.
Värma den första i månaden med en bakgrundsjobb, inte kl 9 när användarna anländer.
Lagra svaret _credits.remaining och varna under en tröskel du väljer.
Cacha det negativa resultatet 'domän hittades inte' i en dag, inte en månad.
Exponera cachelängden i UI:t så att support kan svara 'när hämtades detta?'
Varför en cache slår scraping för länkontroller
Team som behöver kontrollera sidors backlänkar i stor skala börjar ofta med skript som frågar sökmotorer direkt. Dessa skript stannar. De ser billiga ut på dag ett, vilket är varför team behåller dem längre än de borde. En cache framför ett stabilt API är vanligtvis den billigare designen, med färre rörliga delar att sköta.
Skillnaden syns i ingenjörstimmar mer än på den första fakturan. Håll cachen tråkig, så att de flesta av dessa timmar aldrig händer.
Varför fastengjorda länkkontroller stannar?
Sökmotorer throttlar automatiska förfrågningar, så ett skript som fungerar felfritt för femtio URL:er kan stanna vid femtiotusen. Omförsök, proxy-pooler och slumpmässiga fördröjningar lägger till kostnader som aldrig visas på en kreditrad, och de bryts utan varning när målet ändrar sina svar.
Hur gör du ett långt listjobb omstartbart?
Skriv varje färdig domän till cachen medan du går. Om jobbet stannar mitt i, hoppar en omstart över alla domäner som redan har ett lagrat svar och fortsätter där det slutade. Inget laddas två gånger för samma månad, eftersom nyckeln redan innehåller svaret.
Kör jobbet i ett jämnt tempo snarare än i en enda burst. Att sprida ut anropen gör loggarna läsbara och gör att en ändring i kreditanvändning är lätt att förklara.
Vad kostar en lista med 22 000 URL:er med en cache?
Säg att du behöver kontrollera 22 000 länkande URL:er för en kund. Många av dem delar en domän, så deduplicera till domäner först. Dessa 22 000 länkar kan minska till några tusen unika domäner, och ett bulk_dr-anrop tar upp till 2 000 av dem för en enda kredit. Lagra varje resultat per domän och månad, och listan slutar vara ett per-URL-jobb. Håll aritmetiken i en kort anteckning bredvid jobbet, så att nästa person kan köra om det med en annan liststorlek. En siffra med dess uträkning visad är lättare att lita på än en total i sig.
Var detta kopplas
Cachen är mellanskiktet i räknaruppsättningen. När den fungerar blir kostnaden per användare förutsägbar och du kan prissätta en plan baserat på det med jämförelse per användare. Kortare sidor förtjänar en tydlig slut. Denna har det.
Cachefrågor vi ser i kodgranskning
Ska cachen bo i webbläsaren också?
En kort webbläsarcache hjälper tillbakaknappsnavigering, men den delade cachen på din server gör det riktiga sparandet. Håll klientlagring till minuter, eftersom användare på olika maskiner annars skulle se olika siffror för samma domän på samma dag.
Vad händer om en kund säger att en ny länk saknas?
Kontrollera indexmånaden som visas i ditt UI. Om länken lades till efter den senaste uppdateringen kommer den att visas efter nästa. Erbjud en anteckning, inte en återbetalning, eftersom inget är trasigt.
Kan jag kringgå cachen vid behov?
Du kan, men varje kringgående kostar krediter för ett svar som troligen är identiskt. Erbjud det endast till administratörer och begränsa hastigheten per arbetsområde för att undvika oavsiktliga loopar.
Sidnumrering och cachenyckeln
Sidnumrering bitar alla en gång. Inkludera det i nyckeln.
Åtgärderna backlinks och refdomains returnerar upp till 1 000 rader per anrop, med page och per mellan 10 och 5000, och djup sidnumrering är begränsad till 50 000 rader, så en nyckel utan dessa parametrar kommer att betjänas sida ett för varje förfrågan.
Sortering tillhör också nyckeln. En användare som byter från DR fallande till alfabetisk förväntar sig en annan lista, och cachen måste ge efter utan ett nytt upstream-anrop när hela setet redan är lagrat.
Ett snabbt test fångar de flesta nyckelfel. Begär sida två, ändra sorteringen, kontrollera sedan att den cachade sidan två skiljer sig från den cachade sidan ett. Om det inte gör det, saknas en parameter i nyckeln. Hittad tidigt kostar det minuter. En kund ser det aldrig. Kör testet igen innan varje utsläpp, eftersom en ny sorteringsalternativ är den vanliga anledningen till att nyckeln bryts. Skriv in det i din utsläpschecklista.
Planera exportknappen separat: ett bakgrundsjobb, en lagrad fil och ett meddelande när det är klart.