[{"data":1,"prerenderedAt":1751},["ShallowReactive",2],{"navigation-de":3,"content-urls":13,"pagesContext-de-2":153,"pagesContext-de-3":179,"authorsContext-de-jeroenbach":199,"postsContext-de-3-undefined":216},[4,7,10],{"label":5,"to":6},"Blog","\u002Fposts",{"label":8,"to":9},"Portfolio","\u002Fde\u002Fcontent\u002F20-portfolio",{"label":11,"to":12},"Über mich","\u002Fde\u002Fcontent\u002F30-uber-mich",{"page":14,"blogPost":76,"blog":152},{"1":15,"10":32,"20":42,"30":52,"404":63},{"en":16,"nl":26,"de":29},{"title":17,"path":18,"stem":19,"contentId":20,"url":21,"dateModified":22,"slug":23,"locale":24,"type":25},"Home","\u002Fcontent\u002Fhome","content\u002F1.home",1,"","2025-11-02T18:00:00",null,"en","page",{"title":17,"path":18,"stem":19,"contentId":20,"url":27,"dateModified":22,"slug":23,"locale":28,"type":25},"\u002Fnl","nl",{"title":17,"path":18,"stem":19,"contentId":20,"url":30,"dateModified":22,"slug":23,"locale":31,"type":25},"\u002Fde","de",{"en":33,"nl":38,"de":40},{"title":5,"path":34,"stem":35,"contentId":36,"url":6,"dateModified":37,"slug":23,"locale":24,"type":25},"\u002Fcontent\u002Fposts","content\u002F10.posts",10,"2025-10-26T18:00:00",{"title":5,"path":34,"stem":35,"contentId":36,"url":39,"dateModified":37,"slug":23,"locale":28,"type":25},"\u002Fnl\u002Fposts",{"title":5,"path":34,"stem":35,"contentId":36,"url":41,"dateModified":37,"slug":23,"locale":31,"type":25},"\u002Fde\u002Fposts",{"en":43,"nl":49,"de":51},{"title":8,"path":44,"stem":45,"contentId":46,"url":47,"dateModified":48,"slug":23,"locale":24,"type":25},"\u002Fcontent\u002Fportfolio","content\u002F20.portfolio",20,"\u002Fcontent\u002F20-portfolio","2026-07-12T18:00:00",{"title":8,"path":44,"stem":45,"contentId":46,"url":50,"dateModified":48,"slug":23,"locale":28,"type":25},"\u002Fnl\u002Fcontent\u002F20-portfolio",{"title":8,"path":44,"stem":45,"contentId":46,"url":9,"dateModified":48,"slug":23,"locale":31,"type":25},{"en":53,"nl":59,"de":62},{"title":54,"path":55,"stem":56,"contentId":57,"url":58,"dateModified":48,"slug":23,"locale":24,"type":25},"About","\u002Fcontent\u002Fabout","content\u002F30.about",30,"\u002Fcontent\u002F30-about",{"title":60,"path":55,"stem":56,"contentId":57,"url":61,"dateModified":48,"slug":23,"locale":28,"type":25},"Over","\u002Fnl\u002Fcontent\u002F30-over",{"title":11,"path":55,"stem":56,"contentId":57,"url":12,"dateModified":48,"slug":23,"locale":31,"type":25},{"en":64,"nl":70,"de":73},{"title":65,"path":66,"stem":67,"contentId":68,"url":69,"dateModified":22,"slug":23,"locale":24,"type":25},"Page not found","\u002Fcontent\u002Fpage-not-found","content\u002F404.page-not-found",404,"\u002Fcontent\u002F404-page-not-found",{"title":71,"path":66,"stem":67,"contentId":68,"url":72,"dateModified":22,"slug":23,"locale":28,"type":25},"Pagina niet gevonden","\u002Fnl\u002Fcontent\u002F404-pagina-niet-gevonden",{"title":74,"path":66,"stem":67,"contentId":68,"url":75,"dateModified":22,"slug":23,"locale":31,"type":25},"Seite nicht gefunden","\u002Fde\u002Fcontent\u002F404-seite-nicht-gefunden",{"1":77,"2":91,"3":106,"4":123,"5":138},{"en":78,"nl":85,"de":88},{"title":79,"path":80,"stem":81,"contentId":20,"dateModified":82,"slug":23,"url":83,"locale":24,"type":84},"Mastering Conditional Property Types with Vue 3.3 Generics","\u002Fposts\u002F1","posts\u002F1","2025-05-27T11:30:00","\u002Fposts\u002F1-mastering-conditional-property-types-with-vue-3_3-generics","blogPost",{"title":86,"path":80,"stem":81,"contentId":20,"dateModified":82,"slug":23,"url":87,"locale":28,"type":84},"Conditionele Property Types beheersen met Vue 3.3 Generics","\u002Fnl\u002Fposts\u002F1-conditionele-property-types-beheersen-met-vue-3_3-generics",{"title":89,"path":80,"stem":81,"contentId":20,"dateModified":82,"slug":23,"url":90,"locale":31,"type":84},"Bedingte Property-Typen mit Vue 3.3 Generics meistern","\u002Fde\u002Fposts\u002F1-bedingte-property-typen-mit-vue-3_3-generics-meistern",{"en":92,"nl":99,"de":102},{"title":93,"path":94,"stem":95,"contentId":96,"dateModified":97,"slug":23,"url":98,"locale":24,"type":84},"Ditching the Cookie Banners: Run Plausible Analytics on Azure Kubernetes","\u002Fposts\u002F2","posts\u002F2",2,"2025-10-04T13:00:00","\u002Fposts\u002F2-ditching-the-cookie-banners:-run-plausible-analytics-on-azure-kubernetes",{"title":100,"path":94,"stem":95,"contentId":96,"dateModified":97,"slug":23,"url":101,"locale":28,"type":84},"Afscheid van Cookie Banners: Draai Plausible Analytics op Azure Kubernetes","\u002Fnl\u002Fposts\u002F2-afscheid-van-cookie-banners:-draai-plausible-analytics-op-azure-kubernetes",{"title":103,"path":94,"stem":95,"contentId":96,"dateModified":97,"slug":104,"url":105,"locale":31,"type":84},"Abschied von Cookie-Bannern: Plausible Analytics auf Azure Kubernetes betreiben","plausible-analytics-azure-kubernetes-ohne-cookie-banner","\u002Fde\u002Fposts\u002F2-plausible-analytics-azure-kubernetes-ohne-cookie-banner",{"en":107,"nl":115,"de":119},{"title":108,"path":109,"stem":110,"contentId":111,"dateModified":112,"slug":113,"url":114,"locale":24,"type":84},"Track how many people read your articles, using Plausible.io, Vue.js and Azure functions","\u002Fposts\u002F3","posts\u002F3",3,"2025-08-03T15:45:00","track-article-reads-plausible-vue-azure-functions","\u002Fposts\u002F3-track-article-reads-plausible-vue-azure-functions",{"title":116,"path":109,"stem":110,"contentId":111,"dateModified":112,"slug":117,"url":118,"locale":28,"type":84},"Volg hoeveel mensen je artikelen lezen, met Plausible.io, Vue.js en Azure functions","artikel-lezingen-volgen-plausible-vue-azure-functions","\u002Fnl\u002Fposts\u002F3-artikel-lezingen-volgen-plausible-vue-azure-functions",{"title":120,"path":109,"stem":110,"contentId":111,"dateModified":112,"slug":121,"url":122,"locale":31,"type":84},"Verfolgen Sie, wie viele Menschen Ihre Artikel lesen, mit Plausible.io, Vue.js und Azure Functions","artikel-aufrufe-verfolgen-plausible-vue-azure-functions","\u002Fde\u002Fposts\u002F3-artikel-aufrufe-verfolgen-plausible-vue-azure-functions",{"en":124,"nl":131,"de":134},{"title":125,"path":126,"stem":127,"contentId":128,"dateModified":129,"slug":23,"url":130,"locale":24,"type":84},"Deploy a production-ready Kubernetes Cluster on Azure with Terraform","\u002Fposts\u002F4","posts\u002F4",4,"2025-12-06T21:00:00","\u002Fposts\u002F4-deploy-a-production-ready-kubernetes-cluster-on-azure-with-terraform",{"title":132,"path":126,"stem":127,"contentId":128,"dateModified":129,"slug":23,"url":133,"locale":28,"type":84},"Implementeer een productie-klaar Kubernetes Cluster op Azure met Terraform","\u002Fnl\u002Fposts\u002F4-implementeer-een-productie-klaar-kubernetes-cluster-op-azure-met-terraform",{"title":135,"path":126,"stem":127,"contentId":128,"dateModified":129,"slug":136,"url":137,"locale":31,"type":84},"Einen produktionsreifen Kubernetes-Cluster auf Azure mit Terraform bereitstellen","produktionsreifer-kubernetes-cluster-azure-terraform","\u002Fde\u002Fposts\u002F4-produktionsreifer-kubernetes-cluster-azure-terraform",{"en":139,"nl":146,"de":149},{"title":140,"path":141,"stem":142,"contentId":143,"dateModified":144,"slug":23,"url":145,"locale":24,"type":84},"Array to Map conversion in Typescript, with type safety","\u002Fposts\u002F5","posts\u002F5",5,"2025-09-29T21:00:00","\u002Fposts\u002F5-array-to-map-conversion-in-typescript-with-type-safety",{"title":147,"path":141,"stem":142,"contentId":143,"dateModified":144,"slug":23,"url":148,"locale":28,"type":84},"Array naar Map conversie in Typescript, met type veiligheid","\u002Fnl\u002Fposts\u002F5-array-naar-map-conversie-in-typescript-met-type-veiligheid",{"title":150,"path":141,"stem":142,"contentId":143,"dateModified":144,"slug":23,"url":151,"locale":31,"type":84},"Array zu Map Konvertierung in TypeScript, mit Typsicherheit","\u002Fde\u002Fposts\u002F5-array-zu-map-konvertierung-in-typescript-mit-typsicherheit",{},{"id":154,"title":155,"body":156,"canonicalUrl":23,"company":23,"contentId":96,"dateModified":23,"datePublished":23,"description":162,"draft":165,"enableProse":165,"excludeFromNavigation":165,"extension":166,"imageAlt":23,"imageUrl":23,"meta":167,"navigation":173,"partial":173,"path":174,"seo":175,"slug":23,"stem":176,"url":177,"__hash__":178},"pages_de\u002Fcontent\u002F_footer.md","Über Jeroen Bach",{"type":157,"value":158,"toc":163},"minimark",[159],[160,161,162],"p",{},"Entworfen in Figma und erstellt mit Vue.js, Nuxt.js und Tailwind CSS.\nBereitgestellt über Cloudflare Pages und Cloudflare Workers, wobei die API auf Azure Kubernetes Service läuft.\nWebsite-Analysen werden von Plausible Analytics betrieben, ebenfalls bereitgestellt mit Azure Kubernetes Service.",{"title":21,"searchDepth":96,"depth":96,"links":164},[],false,"md",{"readingTime":168},{"text":169,"minutes":170,"time":171,"words":172},"1 min read",0.19,11400,38,true,"\u002Fcontent\u002F_footer",{"title":155,"description":162},"content\u002F_footer","\u002Fde\u002Fcontent\u002F2-uber-jeroen-bach","BLLqEovxxJ3L4C_b_KvMwzx1PlCKy3d9WRuX4SHlvHU",{"id":180,"title":181,"body":182,"canonicalUrl":23,"company":23,"contentId":111,"dateModified":23,"datePublished":23,"description":186,"draft":165,"enableProse":165,"excludeFromNavigation":165,"extension":166,"imageAlt":23,"imageUrl":23,"meta":189,"navigation":173,"partial":173,"path":194,"seo":195,"slug":23,"stem":196,"url":197,"__hash__":198},"pages_de\u002Fcontent\u002F_footer-about.md","Footer About",{"type":157,"value":183,"toc":187},[184],[160,185,186],{},"Ich bin Engineering Manager mit 15 Jahren Erfahrung in der Kombination von praktischer Ingenieursarbeit und Menschenführung.\nDie größte Zufriedenheit finde ich darin, die Bedingungen zu schaffen, unter denen ein Team seine beste Arbeit leisten kann.\nDieser Blog ist der Ort, an dem ich Techniken und Erkenntnisse zum Erstellen großartiger Software teile, inspiriert von realen Projekten.",{"title":21,"searchDepth":96,"depth":96,"links":188},[],{"readingTime":190},{"text":169,"minutes":191,"time":192,"words":193},0.275,16500,55,"\u002Fcontent\u002F_footer-about",{"description":186},"content\u002F_footer-about","\u002Fde\u002Fcontent\u002F3-footer-about","JvPnDX3b8uiLVBqSdJwhE9Pd7OW34Wst9X3a36HtVTs",{"id":200,"company":201,"extension":205,"fullName":206,"github":207,"homePage":208,"imageUrl":204,"linkedIn":209,"meta":210,"role":211,"stem":212,"twitter":213,"userName":214,"__hash__":215},"authors_de\u002Fautoren\u002Fjeroenbach.yaml",{"name":202,"url":203,"imageUrl":204},"Bach.Software","https:\u002F\u002Fbach.software","\u002FJEROEN-4238-SQUARE-zoom.jpeg","yaml","Jeroen Bach","https:\u002F\u002Fgithub.com\u002Fjeroenbach","https:\u002F\u002Fbach.software\u002Fpages\u002Fabout","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fjeroenbach\u002F",{},"Engineering Manager","autoren\u002Fjeroenbach","https:\u002F\u002Fx.com\u002Fjeroenbach","jeroenbach","LAWAl6OxkIQenUN8NiVc-wx8Lal_pDP10NTrZa6s78o",{"id":217,"title":120,"authorName":214,"body":218,"canonicalUrl":23,"category":1722,"contentId":111,"dateModified":112,"datePublished":112,"description":1723,"draft":165,"excerpt":1724,"extension":166,"imageAlt":1736,"imagePosition":1737,"imageUrl":1738,"keywords":1739,"meta":1740,"navigation":173,"path":109,"readingTime":1741,"seo":1746,"slug":121,"stem":110,"url":122,"__hash__":1747,"author":1748},"posts_de\u002Fposts\u002F3.md",{"type":157,"value":219,"toc":1716},[220,240,243,250,255,266,306,309,314,322,326,329,334,339,350,363,367,370,372,389,393,402,1688,1702,1706,1709,1712],[160,221,222,223,227,228,231,232,235,236,239],{},"Im vorherigen Artikel haben Sie gelernt, wie Sie ",[224,225,226],"strong",{},"Plausible"," einrichten, eine ",[224,229,230],{},"datenschutzfreundliche"," und ",[224,233,234],{},"erschwingliche"," Analytics-Lösung.\nIn diesem Artikel lernen Sie, wie Sie mit Plausible das ",[224,237,238],{},"Lese","verhalten Ihrer Besucher erfassen und am Anfang jedes Ihrer Artikel anzeigen können, wie viele Menschen ihn gelesen haben.",[160,241,242],{},"Informationen über Ihre Besucher zu sammeln ist großartig, aber noch mehr Einblick darüber zu haben, wie viele von ihnen Ihre Artikel tatsächlich lesen, ist noch besser.\nDazu müssen wir den Fortschritt Ihres Besuchers in einigen Stufen definieren. Diese Stufen werden wir später in Ziele umwandeln, die Ihnen detaillierte Informationen darüber liefern, wie gut Ihre Artikel abschneiden.",[244,245],"post-image",{"alt":246,"caption":247,"css-class":248,"src":249},"Unsere Lesefortschritt-Schritte als Ziele in Plausible definiert","Hier sehen Sie, wie viele Menschen meinen ersten Artikel geöffnet, angeschaut oder gelesen haben","aspect-[735\u002F468]","posts\u002F3\u002Fplausibe-goals.png",[251,252,254],"h2",{"id":253},"leseverhalten-verfolgen","Leseverhalten verfolgen",[160,256,257,258,261,262,265],{},"Wir verwenden eine von Medium.com inspirierte ",[224,259,260],{},"\"Lesezeit\"",". ",[224,263,264],{},"Medium.com"," berechnet die Lesezeit basierend auf der durchschnittlichen Lesegeschwindigkeit eines Erwachsenen (die etwa 265 Wörter pro Minute beträgt) und teilt die Gesamtwortzahl durch diese Zahl.\nWenn Ihr Artikel also 2650 Wörter enthält, werden Ihre Besucher etwa 10 Minuten zum Lesen benötigen. Bei der Messung des Fortschritts definieren wir einige Schritte, um den Fortschritt anzuzeigen, wobei jeder einen Prozentsatz der gesamten Lesezeit darstellt:",[267,268,269,276,282,288,294,300],"ul",{},[270,271,272,275],"li",{},[224,273,274],{},"opened"," (0%): noch nicht mit dem Lesen begonnen",[270,277,278,281],{},[224,279,280],{},"peeked"," (10%): nur schnell durch den Artikel gescrollt",[270,283,284,287],{},[224,285,286],{},"quarter-read"," (25%): mit dem Lesen begonnen, aber bei einem Viertel aufgehört",[270,289,290,293],{},[224,291,292],{},"half-read"," (50%): die Hälfte gelesen",[270,295,296,299],{},[224,297,298],{},"three-quarter-read"," (75%): zwischen der Hälfte oder dem ganzen Artikel für schnelle Leser gelesen",[270,301,302,305],{},[224,303,304],{},"read"," (100%): Ihren Artikel mit großer Aufmerksamkeit gelesen",[160,307,308],{},"Es ist auch wichtig, einige Szenarien im Hinterkopf zu behalten.",[310,311,313],"h4",{"id":312},"szenario-1-der-leser-wird-abgelenkt-und-ihr-artikel-befindet-sich-nun-im-hintergrund","Szenario 1 => der Leser wird abgelenkt und Ihr Artikel befindet sich nun im Hintergrund",[160,315,316,317,321],{},"Dies ist einfach zu verhindern, wir können einen Event-Listener verwenden, um Änderungen der Dokumentsichtbarkeit zu erkennen und den Timer zu stoppen: ",[318,319,320],"code",{},"document.addEventListener(\"visibilitychange\"",".",[310,323,325],{"id":324},"szenario-2-der-leser-geht-vom-computer-weg","Szenario 2 => der Leser geht vom Computer weg",[160,327,328],{},"Dies ist etwas schwieriger zu erkennen, aber eine Option besteht darin, einen weiteren Indikator für das \"Lesen\" zu verfolgen, nämlich das Scrollen.\nZusätzlich zum Zeitfortschritt verfolgen wir also auch den Scroll-Fortschritt, und nur wenn sowohl Zeit als auch Scroll ein bestimmtes Niveau erreichen, aktualisieren wir den Lesefortschritt auf den nächsten Zustand.",[160,330,331],{},[224,332,333],{},"Klicken Sie auf den Button, um zu sehen, wie Sie beim Lesen dieser Seite abschneiden",[335,336],"page-read-progress",{":reading-time":337,":word-count":338},"readingTime.time","readingTime.words",[160,340,341,342],{},"Um den Lesefortschritt Ihrer Besucher zu verfolgen, habe ich ein praktisches Composable geschrieben, das Sie hier ansehen können: ",[343,344,349],"a",{":target":345,"href":346,"rel":347},"\\_blank","https:\u002F\u002Fgithub.com\u002Fjeroenbach\u002Fbach.software\u002Fblob\u002Fmain\u002Fsrc\u002Fapp\u002Fcomposables\u002FuseReadProgress.ts",[348],"nofollow","useReadProgress.ts",[160,351,352,353,358,359,362],{},"Während das Lesen fortschreitet und sich der Zustand ändert, aktualisieren wir Plausible mit benutzerdefinierten Events.\nDazu habe ich ein weiteres Composable geschrieben, das Sie hier ansehen können: ",[343,354,357],{":target":345,"href":355,"rel":356},"https:\u002F\u002Fgithub.com\u002Fjeroenbach\u002Fbach.software\u002Fblob\u002Fmain\u002Fsrc\u002Fapp\u002Fcomposables\u002FuseReadProgressTracking.ts",[348],"useReadProgressTracking.ts",".\nEs konvertiert die Prozentsätze von ",[318,360,361],{},"useReadProgress"," in die definierten Tracking-Ziele und sendet Tracking-Events an Plausible.",[251,364,366],{"id":365},"ziele-für-jeden-schritt-in-plausible-erstellen","Ziele für jeden Schritt in Plausible erstellen",[160,368,369],{},"Wenn Sie die oben genannten Schritte als Ziele in Plausible definieren, können Sie einen schönen Trichter für jeden Ihrer Artikel sehen und wie weit Ihre Besucher mit ihnen kommen.",[244,371],{"alt":246,"caption":246,"css-class":248,"src":249},[160,373,374,375,378,379,382,383,385,386,388],{},"Um Ziele in Plausible einzurichten, gehen Sie zu ",[318,376,377],{},"Site Settings"," > ",[318,380,381],{},"Goals"," und fügen Sie ein Ziel für jeden der Schritte hinzu (",[224,384,274],{},", ",[224,387,280],{},", etc).",[251,390,392],{"id":391},"lesen-ihrer-seitenstatistiken-von-plausible-mit-einer-azure-function","Lesen Ihrer Seitenstatistiken von Plausible mit einer Azure Function",[160,394,395,396,401],{},"Plausible bietet eine ",[343,397,400],{":target":345,"href":398,"rel":399},"https:\u002F\u002Fplausible.io\u002Fdocs\u002Fstats-api",[348],"Stats API",", die Sie abfragen können, um beispielsweise die Statistiken Ihrer erstellten Ziele zu erhalten.\nSiehe das folgende Codebeispiel, das zeigt, wie Sie die API abfragen.",[403,404,405,1133,1306],"code-group",{},[406,407,412],"pre",{"className":408,"code":409,"filename":410,"language":411,"meta":21,"style":21},"language-csharp shiki shiki-themes github-light github-dark","public async Task\u003CPageReads> GetPageReads(string url)\n{\n    \u002F\u002F Erstelle einen Logger-Scope mit der URL\n    using var scope = _logger.BeginScope(new Dictionary\u003Cstring, object> { { \"url\", url } });\n\n    var uri = new Uri(url);\n    var domain = uri.Host;\n    var relativeUrl = uri.PathAndQuery;\n\n    var payload = new\n    {\n        site_id = domain,\n        metrics = new[] { \"visitors\" }, \u002F\u002F Erhalte die eindeutige Anzahl von Lese-Events\n        date_range = \"all\",\n        filters = new[]{\n            new List\u003Cobject> { \"contains\", \"event:page\", new[] { relativeUrl } },\n            new List\u003Cobject> { \"is\", \"event:goal\", new[] {\"read\", \"three-quarter-read\", \"half-read\", \"quarter-read\", \"peeked\", \"opened\"} },\n        },\n        dimensions = new[] { \"event:goal\" },\n    };\n\n    var jsonPayload = JsonSerializer.Serialize(payload);\n    _logger.LogInformation(\"Payload: {jsonPayload}\", jsonPayload);\n\n    var response = await SendRequest(jsonPayload);\n    var responseContent = await response.Content.ReadAsStringAsync();\n    _logger.LogInformation(\"Response: {responseContent}\", responseContent);\n\n    var queryResult = JsonSerializer.Deserialize\u003CQueryResult>(responseContent);\n    if (queryResult == null)\n    {\n        throw new InvalidOperationException(\"Fehler beim Deserialisieren des Antwortinhalts.\");\n    }\n\n    var resultsDict = queryResult.Results.ToDictionary(x => x.Dimensions.First(), x => x.Metrics.First());\n\n    return new PageReads\n    {\n        Read = resultsDict.GetValueOrDefault(\"read\"),\n        ThreeQuarterRead = resultsDict.GetValueOrDefault(\"three-quarter-read\"),\n        HalfRead = resultsDict.GetValueOrDefault(\"half-read\"),\n        QuarterRead = resultsDict.GetValueOrDefault(\"quarter-read\"),\n        Peeked = resultsDict.GetValueOrDefault(\"peeked\"),\n        Opened = resultsDict.GetValueOrDefault(\"opened\"),\n    };\n}\n","C#","csharp",[318,413,414,454,459,465,512,517,537,550,563,568,580,586,598,620,634,647,678,737,743,760,765,770,789,806,811,830,851,866,871,894,911,916,935,941,946,991,996,1007,1011,1032,1050,1068,1086,1104,1122,1127],{"__ignoreMap":21},[415,416,418,422,425,429,433,436,439,442,445,448,451],"span",{"class":417,"line":20},"line",[415,419,421],{"class":420},"szBVR","public",[415,423,424],{"class":420}," async",[415,426,428],{"class":427},"sScJk"," Task",[415,430,432],{"class":431},"sVt8B","\u003C",[415,434,435],{"class":427},"PageReads",[415,437,438],{"class":431},"> ",[415,440,441],{"class":427},"GetPageReads",[415,443,444],{"class":431},"(",[415,446,447],{"class":420},"string",[415,449,450],{"class":427}," url",[415,452,453],{"class":431},")\n",[415,455,456],{"class":417,"line":96},[415,457,458],{"class":431},"{\n",[415,460,461],{"class":417,"line":111},[415,462,464],{"class":463},"sJ8bj","    \u002F\u002F Erstelle einen Logger-Scope mit der URL\n",[415,466,467,470,473,476,479,482,485,487,490,493,495,497,499,502,505,509],{"class":417,"line":128},[415,468,469],{"class":420},"    using",[415,471,472],{"class":420}," var",[415,474,475],{"class":427}," scope",[415,477,478],{"class":420}," =",[415,480,481],{"class":431}," _logger.",[415,483,484],{"class":427},"BeginScope",[415,486,444],{"class":431},[415,488,489],{"class":420},"new",[415,491,492],{"class":427}," Dictionary",[415,494,432],{"class":431},[415,496,447],{"class":420},[415,498,385],{"class":431},[415,500,501],{"class":420},"object",[415,503,504],{"class":431},"> { { ",[415,506,508],{"class":507},"sZZnC","\"url\"",[415,510,511],{"class":431},", url } });\n",[415,513,514],{"class":417,"line":143},[415,515,516],{"emptyLinePlaceholder":173},"\n",[415,518,520,523,526,528,531,534],{"class":417,"line":519},6,[415,521,522],{"class":420},"    var",[415,524,525],{"class":427}," uri",[415,527,478],{"class":420},[415,529,530],{"class":420}," new",[415,532,533],{"class":427}," Uri",[415,535,536],{"class":431},"(url);\n",[415,538,540,542,545,547],{"class":417,"line":539},7,[415,541,522],{"class":420},[415,543,544],{"class":427}," domain",[415,546,478],{"class":420},[415,548,549],{"class":431}," uri.Host;\n",[415,551,553,555,558,560],{"class":417,"line":552},8,[415,554,522],{"class":420},[415,556,557],{"class":427}," relativeUrl",[415,559,478],{"class":420},[415,561,562],{"class":431}," uri.PathAndQuery;\n",[415,564,566],{"class":417,"line":565},9,[415,567,516],{"emptyLinePlaceholder":173},[415,569,570,572,575,577],{"class":417,"line":36},[415,571,522],{"class":420},[415,573,574],{"class":427}," payload",[415,576,478],{"class":420},[415,578,579],{"class":420}," new\n",[415,581,583],{"class":417,"line":582},11,[415,584,585],{"class":431},"    {\n",[415,587,589,592,595],{"class":417,"line":588},12,[415,590,591],{"class":431},"        site_id ",[415,593,594],{"class":420},"=",[415,596,597],{"class":431}," domain,\n",[415,599,601,604,606,608,611,614,617],{"class":417,"line":600},13,[415,602,603],{"class":431},"        metrics ",[415,605,594],{"class":420},[415,607,530],{"class":420},[415,609,610],{"class":431},"[] { ",[415,612,613],{"class":507},"\"visitors\"",[415,615,616],{"class":431}," }, ",[415,618,619],{"class":463},"\u002F\u002F Erhalte die eindeutige Anzahl von Lese-Events\n",[415,621,623,626,628,631],{"class":417,"line":622},14,[415,624,625],{"class":431},"        date_range ",[415,627,594],{"class":420},[415,629,630],{"class":507}," \"all\"",[415,632,633],{"class":431},",\n",[415,635,637,640,642,644],{"class":417,"line":636},15,[415,638,639],{"class":431},"        filters ",[415,641,594],{"class":420},[415,643,530],{"class":420},[415,645,646],{"class":431},"[]{\n",[415,648,650,653,656,658,660,663,666,668,671,673,675],{"class":417,"line":649},16,[415,651,652],{"class":420},"            new",[415,654,655],{"class":427}," List",[415,657,432],{"class":431},[415,659,501],{"class":420},[415,661,662],{"class":431},"> { ",[415,664,665],{"class":507},"\"contains\"",[415,667,385],{"class":431},[415,669,670],{"class":507},"\"event:page\"",[415,672,385],{"class":431},[415,674,489],{"class":420},[415,676,677],{"class":431},"[] { relativeUrl } },\n",[415,679,681,683,685,687,689,691,694,696,699,701,703,706,709,711,714,716,719,721,724,726,729,731,734],{"class":417,"line":680},17,[415,682,652],{"class":420},[415,684,655],{"class":427},[415,686,432],{"class":431},[415,688,501],{"class":420},[415,690,662],{"class":431},[415,692,693],{"class":507},"\"is\"",[415,695,385],{"class":431},[415,697,698],{"class":507},"\"event:goal\"",[415,700,385],{"class":431},[415,702,489],{"class":420},[415,704,705],{"class":431},"[] {",[415,707,708],{"class":507},"\"read\"",[415,710,385],{"class":431},[415,712,713],{"class":507},"\"three-quarter-read\"",[415,715,385],{"class":431},[415,717,718],{"class":507},"\"half-read\"",[415,720,385],{"class":431},[415,722,723],{"class":507},"\"quarter-read\"",[415,725,385],{"class":431},[415,727,728],{"class":507},"\"peeked\"",[415,730,385],{"class":431},[415,732,733],{"class":507},"\"opened\"",[415,735,736],{"class":431},"} },\n",[415,738,740],{"class":417,"line":739},18,[415,741,742],{"class":431},"        },\n",[415,744,746,749,751,753,755,757],{"class":417,"line":745},19,[415,747,748],{"class":431},"        dimensions ",[415,750,594],{"class":420},[415,752,530],{"class":420},[415,754,610],{"class":431},[415,756,698],{"class":507},[415,758,759],{"class":431}," },\n",[415,761,762],{"class":417,"line":46},[415,763,764],{"class":431},"    };\n",[415,766,768],{"class":417,"line":767},21,[415,769,516],{"emptyLinePlaceholder":173},[415,771,773,775,778,780,783,786],{"class":417,"line":772},22,[415,774,522],{"class":420},[415,776,777],{"class":427}," jsonPayload",[415,779,478],{"class":420},[415,781,782],{"class":431}," JsonSerializer.",[415,784,785],{"class":427},"Serialize",[415,787,788],{"class":431},"(payload);\n",[415,790,792,795,798,800,803],{"class":417,"line":791},23,[415,793,794],{"class":431},"    _logger.",[415,796,797],{"class":427},"LogInformation",[415,799,444],{"class":431},[415,801,802],{"class":507},"\"Payload: {jsonPayload}\"",[415,804,805],{"class":431},", jsonPayload);\n",[415,807,809],{"class":417,"line":808},24,[415,810,516],{"emptyLinePlaceholder":173},[415,812,814,816,819,821,824,827],{"class":417,"line":813},25,[415,815,522],{"class":420},[415,817,818],{"class":427}," response",[415,820,478],{"class":420},[415,822,823],{"class":420}," await",[415,825,826],{"class":427}," SendRequest",[415,828,829],{"class":431},"(jsonPayload);\n",[415,831,833,835,838,840,842,845,848],{"class":417,"line":832},26,[415,834,522],{"class":420},[415,836,837],{"class":427}," responseContent",[415,839,478],{"class":420},[415,841,823],{"class":420},[415,843,844],{"class":431}," response.Content.",[415,846,847],{"class":427},"ReadAsStringAsync",[415,849,850],{"class":431},"();\n",[415,852,854,856,858,860,863],{"class":417,"line":853},27,[415,855,794],{"class":431},[415,857,797],{"class":427},[415,859,444],{"class":431},[415,861,862],{"class":507},"\"Response: {responseContent}\"",[415,864,865],{"class":431},", responseContent);\n",[415,867,869],{"class":417,"line":868},28,[415,870,516],{"emptyLinePlaceholder":173},[415,872,874,876,879,881,883,886,888,891],{"class":417,"line":873},29,[415,875,522],{"class":420},[415,877,878],{"class":427}," queryResult",[415,880,478],{"class":420},[415,882,782],{"class":431},[415,884,885],{"class":427},"Deserialize",[415,887,432],{"class":431},[415,889,890],{"class":427},"QueryResult",[415,892,893],{"class":431},">(responseContent);\n",[415,895,896,899,902,905,909],{"class":417,"line":57},[415,897,898],{"class":420},"    if",[415,900,901],{"class":431}," (queryResult ",[415,903,904],{"class":420},"==",[415,906,908],{"class":907},"sj4cs"," null",[415,910,453],{"class":431},[415,912,914],{"class":417,"line":913},31,[415,915,585],{"class":431},[415,917,919,922,924,927,929,932],{"class":417,"line":918},32,[415,920,921],{"class":420},"        throw",[415,923,530],{"class":420},[415,925,926],{"class":427}," InvalidOperationException",[415,928,444],{"class":431},[415,930,931],{"class":507},"\"Fehler beim Deserialisieren des Antwortinhalts.\"",[415,933,934],{"class":431},");\n",[415,936,938],{"class":417,"line":937},33,[415,939,940],{"class":431},"    }\n",[415,942,944],{"class":417,"line":943},34,[415,945,516],{"emptyLinePlaceholder":173},[415,947,949,951,954,956,959,962,964,967,970,973,976,979,981,983,986,988],{"class":417,"line":948},35,[415,950,522],{"class":420},[415,952,953],{"class":427}," resultsDict",[415,955,478],{"class":420},[415,957,958],{"class":431}," queryResult.Results.",[415,960,961],{"class":427},"ToDictionary",[415,963,444],{"class":431},[415,965,966],{"class":427},"x",[415,968,969],{"class":420}," =>",[415,971,972],{"class":431}," x.Dimensions.",[415,974,975],{"class":427},"First",[415,977,978],{"class":431},"(), ",[415,980,966],{"class":427},[415,982,969],{"class":420},[415,984,985],{"class":431}," x.Metrics.",[415,987,975],{"class":427},[415,989,990],{"class":431},"());\n",[415,992,994],{"class":417,"line":993},36,[415,995,516],{"emptyLinePlaceholder":173},[415,997,999,1002,1004],{"class":417,"line":998},37,[415,1000,1001],{"class":420},"    return",[415,1003,530],{"class":420},[415,1005,1006],{"class":427}," PageReads\n",[415,1008,1009],{"class":417,"line":172},[415,1010,585],{"class":431},[415,1012,1014,1017,1019,1022,1025,1027,1029],{"class":417,"line":1013},39,[415,1015,1016],{"class":431},"        Read ",[415,1018,594],{"class":420},[415,1020,1021],{"class":431}," resultsDict.",[415,1023,1024],{"class":427},"GetValueOrDefault",[415,1026,444],{"class":431},[415,1028,708],{"class":507},[415,1030,1031],{"class":431},"),\n",[415,1033,1035,1038,1040,1042,1044,1046,1048],{"class":417,"line":1034},40,[415,1036,1037],{"class":431},"        ThreeQuarterRead ",[415,1039,594],{"class":420},[415,1041,1021],{"class":431},[415,1043,1024],{"class":427},[415,1045,444],{"class":431},[415,1047,713],{"class":507},[415,1049,1031],{"class":431},[415,1051,1053,1056,1058,1060,1062,1064,1066],{"class":417,"line":1052},41,[415,1054,1055],{"class":431},"        HalfRead ",[415,1057,594],{"class":420},[415,1059,1021],{"class":431},[415,1061,1024],{"class":427},[415,1063,444],{"class":431},[415,1065,718],{"class":507},[415,1067,1031],{"class":431},[415,1069,1071,1074,1076,1078,1080,1082,1084],{"class":417,"line":1070},42,[415,1072,1073],{"class":431},"        QuarterRead ",[415,1075,594],{"class":420},[415,1077,1021],{"class":431},[415,1079,1024],{"class":427},[415,1081,444],{"class":431},[415,1083,723],{"class":507},[415,1085,1031],{"class":431},[415,1087,1089,1092,1094,1096,1098,1100,1102],{"class":417,"line":1088},43,[415,1090,1091],{"class":431},"        Peeked ",[415,1093,594],{"class":420},[415,1095,1021],{"class":431},[415,1097,1024],{"class":427},[415,1099,444],{"class":431},[415,1101,728],{"class":507},[415,1103,1031],{"class":431},[415,1105,1107,1110,1112,1114,1116,1118,1120],{"class":417,"line":1106},44,[415,1108,1109],{"class":431},"        Opened ",[415,1111,594],{"class":420},[415,1113,1021],{"class":431},[415,1115,1024],{"class":427},[415,1117,444],{"class":431},[415,1119,733],{"class":507},[415,1121,1031],{"class":431},[415,1123,1125],{"class":417,"line":1124},45,[415,1126,764],{"class":431},[415,1128,1130],{"class":417,"line":1129},46,[415,1131,1132],{"class":431},"}\n",[406,1134,1139],{"className":1135,"code":1136,"filename":1137,"language":1138,"meta":21,"style":21},"language-json shiki shiki-themes github-light github-dark","{\n  \"site_id\": \"{{site_id}}\",\n  \"metrics\": [\"visitors\"],\n  \"date_range\": \"all\",\n  \"filters\": [\n    [\"contains\", \"event:page\", [\"{{relative_url}}\"]],\n    [\n      \"is\",\n      \"event:goal\",\n      [\n        \"read\",\n        \"three-quarter-read\",\n        \"half-read\",\n        \"quarter-read\",\n        \"peeked\",\n        \"opened\"\n      ]\n    ]\n  ],\n  \"dimensions\": [\"event:goal\"]\n}\n","JSON request","json",[318,1140,1141,1145,1158,1171,1183,1191,1211,1216,1223,1230,1235,1242,1249,1256,1263,1270,1275,1280,1285,1290,1302],{"__ignoreMap":21},[415,1142,1143],{"class":417,"line":20},[415,1144,458],{"class":431},[415,1146,1147,1150,1153,1156],{"class":417,"line":96},[415,1148,1149],{"class":907},"  \"site_id\"",[415,1151,1152],{"class":431},": ",[415,1154,1155],{"class":507},"\"{{site_id}}\"",[415,1157,633],{"class":431},[415,1159,1160,1163,1166,1168],{"class":417,"line":111},[415,1161,1162],{"class":907},"  \"metrics\"",[415,1164,1165],{"class":431},": [",[415,1167,613],{"class":507},[415,1169,1170],{"class":431},"],\n",[415,1172,1173,1176,1178,1181],{"class":417,"line":128},[415,1174,1175],{"class":907},"  \"date_range\"",[415,1177,1152],{"class":431},[415,1179,1180],{"class":507},"\"all\"",[415,1182,633],{"class":431},[415,1184,1185,1188],{"class":417,"line":143},[415,1186,1187],{"class":907},"  \"filters\"",[415,1189,1190],{"class":431},": [\n",[415,1192,1193,1196,1198,1200,1202,1205,1208],{"class":417,"line":519},[415,1194,1195],{"class":431},"    [",[415,1197,665],{"class":507},[415,1199,385],{"class":431},[415,1201,670],{"class":507},[415,1203,1204],{"class":431},", [",[415,1206,1207],{"class":507},"\"{{relative_url}}\"",[415,1209,1210],{"class":431},"]],\n",[415,1212,1213],{"class":417,"line":539},[415,1214,1215],{"class":431},"    [\n",[415,1217,1218,1221],{"class":417,"line":552},[415,1219,1220],{"class":507},"      \"is\"",[415,1222,633],{"class":431},[415,1224,1225,1228],{"class":417,"line":565},[415,1226,1227],{"class":507},"      \"event:goal\"",[415,1229,633],{"class":431},[415,1231,1232],{"class":417,"line":36},[415,1233,1234],{"class":431},"      [\n",[415,1236,1237,1240],{"class":417,"line":582},[415,1238,1239],{"class":507},"        \"read\"",[415,1241,633],{"class":431},[415,1243,1244,1247],{"class":417,"line":588},[415,1245,1246],{"class":507},"        \"three-quarter-read\"",[415,1248,633],{"class":431},[415,1250,1251,1254],{"class":417,"line":600},[415,1252,1253],{"class":507},"        \"half-read\"",[415,1255,633],{"class":431},[415,1257,1258,1261],{"class":417,"line":622},[415,1259,1260],{"class":507},"        \"quarter-read\"",[415,1262,633],{"class":431},[415,1264,1265,1268],{"class":417,"line":636},[415,1266,1267],{"class":507},"        \"peeked\"",[415,1269,633],{"class":431},[415,1271,1272],{"class":417,"line":649},[415,1273,1274],{"class":507},"        \"opened\"\n",[415,1276,1277],{"class":417,"line":680},[415,1278,1279],{"class":431},"      ]\n",[415,1281,1282],{"class":417,"line":739},[415,1283,1284],{"class":431},"    ]\n",[415,1286,1287],{"class":417,"line":745},[415,1288,1289],{"class":431},"  ],\n",[415,1291,1292,1295,1297,1299],{"class":417,"line":46},[415,1293,1294],{"class":907},"  \"dimensions\"",[415,1296,1165],{"class":431},[415,1298,698],{"class":507},[415,1300,1301],{"class":431},"]\n",[415,1303,1304],{"class":417,"line":767},[415,1305,1132],{"class":431},[406,1307,1310],{"className":1135,"code":1308,"filename":1309,"language":1138,"meta":21,"style":21},"{\n  \"results\": [\n    { \"metrics\": [68], \"dimensions\": [\"opened\"] },\n    { \"metrics\": [45], \"dimensions\": [\"peeked\"] },\n    { \"metrics\": [40], \"dimensions\": [\"quarter-read\"] },\n    { \"metrics\": [31], \"dimensions\": [\"half-read\"] },\n    { \"metrics\": [21], \"dimensions\": [\"three-quarter-read\"] },\n    { \"metrics\": [14], \"dimensions\": [\"read\"] }\n  ],\n  \"meta\": {},\n  \"query\": {\n    \"site_id\": \"{{site_id}}\",\n    \"metrics\": [\"visitors\"],\n    \"date_range\": [\"2025-01-20T00:00:00+01:00\", \"2025-08-02T23:59:59+02:00\"],\n    \"filters\": [\n      [\"contains\", \"event:page\", [\"{{relative_url}}\"]],\n      [\n        \"is\",\n        \"event:goal\",\n        [\n          \"read\",\n          \"three-quarter-read\",\n          \"half-read\",\n          \"quarter-read\",\n          \"peeked\",\n          \"opened\"\n        ]\n      ]\n    ],\n    \"dimensions\": [\"event:goal\"],\n    \"order_by\": [[\"visitors\", \"desc\"]],\n    \"include\": {},\n    \"pagination\": { \"offset\": 0, \"limit\": 10000 }\n  }\n}\n","JSON response",[318,1311,1312,1316,1323,1349,1370,1391,1412,1433,1455,1459,1467,1475,1486,1497,1514,1521,1538,1542,1549,1556,1561,1568,1575,1582,1589,1596,1601,1606,1610,1615,1626,1643,1650,1679,1684],{"__ignoreMap":21},[415,1313,1314],{"class":417,"line":20},[415,1315,458],{"class":431},[415,1317,1318,1321],{"class":417,"line":96},[415,1319,1320],{"class":907},"  \"results\"",[415,1322,1190],{"class":431},[415,1324,1325,1328,1331,1333,1336,1339,1342,1344,1346],{"class":417,"line":111},[415,1326,1327],{"class":431},"    { ",[415,1329,1330],{"class":907},"\"metrics\"",[415,1332,1165],{"class":431},[415,1334,1335],{"class":907},"68",[415,1337,1338],{"class":431},"], ",[415,1340,1341],{"class":907},"\"dimensions\"",[415,1343,1165],{"class":431},[415,1345,733],{"class":507},[415,1347,1348],{"class":431},"] },\n",[415,1350,1351,1353,1355,1357,1360,1362,1364,1366,1368],{"class":417,"line":128},[415,1352,1327],{"class":431},[415,1354,1330],{"class":907},[415,1356,1165],{"class":431},[415,1358,1359],{"class":907},"45",[415,1361,1338],{"class":431},[415,1363,1341],{"class":907},[415,1365,1165],{"class":431},[415,1367,728],{"class":507},[415,1369,1348],{"class":431},[415,1371,1372,1374,1376,1378,1381,1383,1385,1387,1389],{"class":417,"line":143},[415,1373,1327],{"class":431},[415,1375,1330],{"class":907},[415,1377,1165],{"class":431},[415,1379,1380],{"class":907},"40",[415,1382,1338],{"class":431},[415,1384,1341],{"class":907},[415,1386,1165],{"class":431},[415,1388,723],{"class":507},[415,1390,1348],{"class":431},[415,1392,1393,1395,1397,1399,1402,1404,1406,1408,1410],{"class":417,"line":519},[415,1394,1327],{"class":431},[415,1396,1330],{"class":907},[415,1398,1165],{"class":431},[415,1400,1401],{"class":907},"31",[415,1403,1338],{"class":431},[415,1405,1341],{"class":907},[415,1407,1165],{"class":431},[415,1409,718],{"class":507},[415,1411,1348],{"class":431},[415,1413,1414,1416,1418,1420,1423,1425,1427,1429,1431],{"class":417,"line":539},[415,1415,1327],{"class":431},[415,1417,1330],{"class":907},[415,1419,1165],{"class":431},[415,1421,1422],{"class":907},"21",[415,1424,1338],{"class":431},[415,1426,1341],{"class":907},[415,1428,1165],{"class":431},[415,1430,713],{"class":507},[415,1432,1348],{"class":431},[415,1434,1435,1437,1439,1441,1444,1446,1448,1450,1452],{"class":417,"line":552},[415,1436,1327],{"class":431},[415,1438,1330],{"class":907},[415,1440,1165],{"class":431},[415,1442,1443],{"class":907},"14",[415,1445,1338],{"class":431},[415,1447,1341],{"class":907},[415,1449,1165],{"class":431},[415,1451,708],{"class":507},[415,1453,1454],{"class":431},"] }\n",[415,1456,1457],{"class":417,"line":565},[415,1458,1289],{"class":431},[415,1460,1461,1464],{"class":417,"line":36},[415,1462,1463],{"class":907},"  \"meta\"",[415,1465,1466],{"class":431},": {},\n",[415,1468,1469,1472],{"class":417,"line":582},[415,1470,1471],{"class":907},"  \"query\"",[415,1473,1474],{"class":431},": {\n",[415,1476,1477,1480,1482,1484],{"class":417,"line":588},[415,1478,1479],{"class":907},"    \"site_id\"",[415,1481,1152],{"class":431},[415,1483,1155],{"class":507},[415,1485,633],{"class":431},[415,1487,1488,1491,1493,1495],{"class":417,"line":600},[415,1489,1490],{"class":907},"    \"metrics\"",[415,1492,1165],{"class":431},[415,1494,613],{"class":507},[415,1496,1170],{"class":431},[415,1498,1499,1502,1504,1507,1509,1512],{"class":417,"line":622},[415,1500,1501],{"class":907},"    \"date_range\"",[415,1503,1165],{"class":431},[415,1505,1506],{"class":507},"\"2025-01-20T00:00:00+01:00\"",[415,1508,385],{"class":431},[415,1510,1511],{"class":507},"\"2025-08-02T23:59:59+02:00\"",[415,1513,1170],{"class":431},[415,1515,1516,1519],{"class":417,"line":636},[415,1517,1518],{"class":907},"    \"filters\"",[415,1520,1190],{"class":431},[415,1522,1523,1526,1528,1530,1532,1534,1536],{"class":417,"line":649},[415,1524,1525],{"class":431},"      [",[415,1527,665],{"class":507},[415,1529,385],{"class":431},[415,1531,670],{"class":507},[415,1533,1204],{"class":431},[415,1535,1207],{"class":507},[415,1537,1210],{"class":431},[415,1539,1540],{"class":417,"line":680},[415,1541,1234],{"class":431},[415,1543,1544,1547],{"class":417,"line":739},[415,1545,1546],{"class":507},"        \"is\"",[415,1548,633],{"class":431},[415,1550,1551,1554],{"class":417,"line":745},[415,1552,1553],{"class":507},"        \"event:goal\"",[415,1555,633],{"class":431},[415,1557,1558],{"class":417,"line":46},[415,1559,1560],{"class":431},"        [\n",[415,1562,1563,1566],{"class":417,"line":767},[415,1564,1565],{"class":507},"          \"read\"",[415,1567,633],{"class":431},[415,1569,1570,1573],{"class":417,"line":772},[415,1571,1572],{"class":507},"          \"three-quarter-read\"",[415,1574,633],{"class":431},[415,1576,1577,1580],{"class":417,"line":791},[415,1578,1579],{"class":507},"          \"half-read\"",[415,1581,633],{"class":431},[415,1583,1584,1587],{"class":417,"line":808},[415,1585,1586],{"class":507},"          \"quarter-read\"",[415,1588,633],{"class":431},[415,1590,1591,1594],{"class":417,"line":813},[415,1592,1593],{"class":507},"          \"peeked\"",[415,1595,633],{"class":431},[415,1597,1598],{"class":417,"line":832},[415,1599,1600],{"class":507},"          \"opened\"\n",[415,1602,1603],{"class":417,"line":853},[415,1604,1605],{"class":431},"        ]\n",[415,1607,1608],{"class":417,"line":868},[415,1609,1279],{"class":431},[415,1611,1612],{"class":417,"line":873},[415,1613,1614],{"class":431},"    ],\n",[415,1616,1617,1620,1622,1624],{"class":417,"line":57},[415,1618,1619],{"class":907},"    \"dimensions\"",[415,1621,1165],{"class":431},[415,1623,698],{"class":507},[415,1625,1170],{"class":431},[415,1627,1628,1631,1634,1636,1638,1641],{"class":417,"line":913},[415,1629,1630],{"class":907},"    \"order_by\"",[415,1632,1633],{"class":431},": [[",[415,1635,613],{"class":507},[415,1637,385],{"class":431},[415,1639,1640],{"class":507},"\"desc\"",[415,1642,1210],{"class":431},[415,1644,1645,1648],{"class":417,"line":918},[415,1646,1647],{"class":907},"    \"include\"",[415,1649,1466],{"class":431},[415,1651,1652,1655,1658,1661,1663,1666,1668,1671,1673,1676],{"class":417,"line":937},[415,1653,1654],{"class":907},"    \"pagination\"",[415,1656,1657],{"class":431},": { ",[415,1659,1660],{"class":907},"\"offset\"",[415,1662,1152],{"class":431},[415,1664,1665],{"class":907},"0",[415,1667,385],{"class":431},[415,1669,1670],{"class":907},"\"limit\"",[415,1672,1152],{"class":431},[415,1674,1675],{"class":907},"10000",[415,1677,1678],{"class":431}," }\n",[415,1680,1681],{"class":417,"line":943},[415,1682,1683],{"class":431},"  }\n",[415,1685,1686],{"class":417,"line":948},[415,1687,1132],{"class":431},[160,1689,1690,1691,1696,1697],{},"Sehen Sie die vollständige Implementierung hier ",[343,1692,1695],{":target":345,"href":1693,"rel":1694},"https:\u002F\u002Fgithub.com\u002Fjeroenbach\u002Fbach.software\u002Fblob\u002Fd902b918933fdf2291dc896094b00ac13510e980\u002Fsrc\u002Fapi\u002FBach.Software.Infrastructure\u002FPlausibleAnalytics\u002FServices\u002FPlausibleService.cs#L35-L45",[348],"PlausibleService.cs","\nund das gesamte Projekt hier ",[343,1698,1701],{":target":345,"href":1699,"rel":1700},"https:\u002F\u002Fgithub.com\u002Fjeroenbach\u002Fbach.software\u002Ftree\u002Fmain\u002Fsrc\u002Fapi",[348],"Bach.Software.API",[251,1703,1705],{"id":1704},"fazit","Fazit",[160,1707,1708],{},"Zu verstehen, wie tief sich Ihr Publikum mit Ihren Inhalten beschäftigt, ist weitaus bedeutsamer als einfach nur Seitenaufrufe zu zählen.\nMit nur wenigen Zeilen Code und der Leistungsfähigkeit von Plausible können Sie nun genau verfolgen, ob Ihre Leser nur überfliegen oder wirklich eintauchen.\nIndem Sie Scroll-Verhalten und Lesezeit kombinieren, können Sie Ihre redaktionelle Strategie verfeinern und erkennen, was am meisten ankommt.\nUnd da es cookie-los ist, entspricht es modernen Datenschutzstandards, ohne auf Erkenntnisse zu verzichten.",[160,1710,1711],{},"Egal ob Sie ein Solo-Entwickler, ein Blogger oder der Verwalter einer größeren Content-Plattform sind, dieser Ansatz gibt Ihnen tiefe Einblicke ohne die Last invasiven Trackings.\nProbieren Sie es bei Ihrem nächsten Beitrag aus, Sie könnten überrascht sein, was Ihre Leser wirklich tun.",[1713,1714,1715],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":21,"searchDepth":96,"depth":96,"links":1717},[1718,1719,1720,1721],{"id":253,"depth":96,"text":254},{"id":365,"depth":96,"text":366},{"id":391,"depth":96,"text":392},{"id":1704,"depth":96,"text":1705},"Vue.js","Erfahren Sie, wie Sie das Leseverhalten Ihrer Besucher mit Plausible.io, Vue.js und Azure Functions verfolgen. Dieser Artikel behandelt das Einrichten von Zielen in Plausible, das Tracking des Lesefortschritts und die Analyse des Besucherengagements mit Ihren Inhalten.",{"type":157,"value":1725},[1726],[160,1727,222,1728,227,1730,231,1732,235,1734,239],{},[224,1729,226],{},[224,1731,230],{},[224,1733,234],{},[224,1735,238],{},"Lese-Trichter Ihrer Besucher","object-top","\u002Fposts\u002F3\u002Fcover.jpeg",[1722,410],{},{"text":1742,"minutes":1743,"time":1744,"words":1745},"5 min read",4.42,265200,884,{"title":120,"description":1723},"iEvbbbGiXlrA5jFZDqwzFmgl_xCeHfTG439XHIOvEnY",{"id":200,"company":1749,"extension":205,"fullName":206,"github":207,"homePage":208,"imageUrl":204,"linkedIn":209,"meta":1750,"role":211,"stem":212,"twitter":213,"userName":214,"__hash__":215},{"name":202,"url":203,"imageUrl":204},{},1786173071325]