亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Heim Web-Frontend js-Tutorial Lassen Sie die Pipeline sichtbar, um die Blog-Bereitstellung zu überwachen

Lassen Sie die Pipeline sichtbar, um die Blog-Bereitstellung zu überwachen

Jan 14, 2025 pm 02:29 PM

Eines der Dinge, die mich an Computaria st?ren, ist, dass ich die Bereitstellung nicht im Blog selbst verfolgen kann. Da mich das also st?rt, warum sollte ich es nicht beheben?

Die Pipeline

Derzeit gibt es zwei M?glichkeiten, um festzustellen, ob die Bereitstellung ausgeführt wird:

  • ?ffnen Sie das Repository auf der Seite ?Jobs/Pipelines“ und sehen Sie, wie das neueste ausgeführt wird
  • im Repository ?ffnen und zu README.md scrollen

Beide L?sungen erscheinen mir nicht gro?artig. Ich h?tte gerne etwas Leichteres in der Informatik selbst.

Die Idee

Nach einer kurzen Beratung mit Kauê habe ich beschlossen, seinem Tipp zu folgen: Poste auf /about.

Im ersten Experiment:

Deixando a pipeline visível para acompanhar deploy do blog

Nein, es wurde h?sslich. Ich wei? bereits, dass ich nicht m?chte, dass dies standardm??ig angezeigt wird. Aber um die Informationen zu bringen, reicht es aus. Ich muss nur verstecken, was h?sslich ist, und es auf ausdrückliche Anfrage verfügbar machen, auch wenn es h?sslich ist.

Proof of Concept: Abstürze, sofern nicht anders angegeben

Nun, als Erstes müssen wir wissen, ob wir etwas unternehmen sollten. Hierzu wurde als API das Vorhandensein des Abfrageparameters Status mit dem Wert true definiert.

Um die URL zu erhalten, habe ich window.location verwendet. Im Location-Objekt befindet sich das Suchfeld, das genau dazu dient, die Abfrageparameter zu verwalten, die für den Zugriff auf die spezifische URL verwendet werden.

Beispielsweise ist für http://localhost:4000/blog/about?q=1 der Wert von window.location.search ?q=1. Um den Umgang mit den Inhalten innerhalb der Abfrageparameter zu erleichtern, gibt es ein Objekt vom Typ URLSearchParams. Soweit ich der Dokumentation entnehmen konnte, ben?tige ich zum Instanziieren von URLSearchParams die Abfragezeichenfolge, jedoch ohne das ? des Pr?fixes. Ich kann dies mit window.location.search.substring(1) erreichen.

Jetzt, mit diesem Objekt in der Hand, kann ich einfach den Wert jedes gewünschten Abfrageparameters abfragen:

const queryParams = new URLSearchParams(window.location.search.substring(1));

if (queryParams.get("status") === "true") {
    console.log("oba, vamos exibir o pipeline!")
} else {
    console.log("nops, n?o vamos exibir nada")
}

Damit ich dies in der Hand habe, muss ich die Ma?nahme ergreifen, das Pipeline-Abzeichen anzuzeigen. Der Einfachheit halber habe ich beschlossen, es als einfügbares HTML-Snippet bereitzustellen: _includes/pipeline.html. Ich habe also kostenloses HTML, das ich nach Belieben bearbeiten kann.

Am Anfang war es einfach ein

unsichtbar:

<div>



<p>Para importar, no /about só precisei colocar {%include pipeline.html%} no come?o do arquivo, o Jekyll se encarregou de montar tudo certo.</p>

<p>Ok, vamos por o script para detectar se deveria ou n?o exibir a tag:<br>
</p>

<pre class="brush:php;toolbar:false"><script>
    const queryParams = new URLSearchParams(window.location.search.substring(1));

    if (queryParams.get("status") === "true") {
        console.log("oba, vamos exibir o pipeline!")
    } else {
        console.log("nops, n?o vamos exibir nada")
    }
</script>
<div>



<p>So far, so good. Agora, vamos mudar a exibi??o para display: block caso seja para exibir o pipeline, ou sumir logo de uma vez com a <div>. Pelo console da web, bastaria fazer algo nesse esquema:<br>
</p>

<pre class="brush:php;toolbar:false">const pipeline = document.getElementById("pipeline")

if (...) {
    pipeline.style.display = "block"
} else {
    pipeline.remove()
}

Platzierung im HTML-Fragment:

<script>
    const queryParams = new URLSearchParams(window.location.search.substring(1));
    const pipeline = document.getElementById("pipeline")

    if (queryParams.get("status") === "true") {
        pipeline.style.display = "block"
    } else {
        pipeline.remove()
    }
</script>
<div>



<p>E... falhou. Por quê? Porque no momento que a fun??o rodar ainda n?o tem definido quem é o elemento com id pipeline. Ent?o preciso mudar o ciclo de vida para rodar o script apenas quando a página for carregada. Basta colocar o <script defer>, certo? Bem, n?o. Porque defer n?o funciona bem com inline, apenas com arquivo de source explícito. Veja a documenta??o.

<p>Ou seja, precisei colocar o arquivo JavaScript explicitamente para o Computaria. Como a priori tudo que está solto na pasta do blog é colocado como asset disponível para o Jekyll publicar, criei o js/pipeline-loader.js:<br>
</p>

<pre class="brush:php;toolbar:false"><script src="{{ "/js/pipeline-loader.js" | prepend: site.baseurl }}" defer>
</script>
<div>



<p>E no script:<br>
</p>

<pre class="brush:php;toolbar:false">const queryParams = new URLSearchParams(window.location.search.substring(1));
const pipeline = document.getElementById("pipeline")

if (queryParams.get("status") === "true") {
    pipeline.style.display = "block"
} else {
    pipeline.remove()
}

Gro?artig, lass uns etwas Nützliches tun und das Bild posten? Um ein Element dynamisch zu erstellen, verwenden Sie einfach document.createElement. Dann gebe ich die Badge-URL ein:

const queryParams = new URLSearchParams(window.location.search.substring(1));
const pipeline = document.getElementById("pipeline")

if (queryParams.get("status") === "true") {
    pipeline.style.display = "block"

    const pipelineImg = document.createElement("img")
    pipelineImg.src = "{{site.repository.base}}/badges/master/pipeline.svg"

    pipeline.appendChild(pipelineImg)
} else {
    pipeline.remove()
}

Aber es zeigte ein kaputtes Bild ... hmmm, welche Meldung wird auf der Konsole angezeigt?

GET http://localhost:4000/blog/about/{{site.repository.base}}/badges/master/pipeline.svg [HTTP/1.1 404 Not Found 4ms]

Seltsam, h?tte er die niedliche Repository-URL bekommen sollen? Oh, das ist mir aufgefallen. Er hat Liquid überhaupt nicht verarbeitet. Um damit umzugehen, habe ich beschlossen, dem Beispiel in css/main.scss zu folgen, einer leeren Frontmatter.

const queryParams = new URLSearchParams(window.location.search.substring(1));

if (queryParams.get("status") === "true") {
    console.log("oba, vamos exibir o pipeline!")
} else {
    console.log("nops, n?o vamos exibir nada")
}

Dies gibt eine Fehlermeldung aus, da Frontmatter kein Javascript ist und der Fehler in der ersten Konstante angezeigt wird. Da mich das st?rt, war der direkteste Weg, mit dem ich umgehen k?nnte, früher einen ?harmlosen Fehler“ zu erzeugen. Ich habe ein ; hinzugefügt direkt nach der Titelsache:

<div>



<p>Para importar, no /about só precisei colocar {%include pipeline.html%} no come?o do arquivo, o Jekyll se encarregou de montar tudo certo.</p>

<p>Ok, vamos por o script para detectar se deveria ou n?o exibir a tag:<br>
</p>

<pre class="brush:php;toolbar:false"><script>
    const queryParams = new URLSearchParams(window.location.search.substring(1));

    if (queryParams.get("status") === "true") {
        console.log("oba, vamos exibir o pipeline!")
    } else {
        console.log("nops, n?o vamos exibir nada")
    }
</script>
<div>



<p>So far, so good. Agora, vamos mudar a exibi??o para display: block caso seja para exibir o pipeline, ou sumir logo de uma vez com a <div>. Pelo console da web, bastaria fazer algo nesse esquema:<br>
</p>

<pre class="brush:php;toolbar:false">const pipeline = document.getElementById("pipeline")

if (...) {
    pipeline.style.display = "block"
} else {
    pipeline.remove()
}

?rgernisse...

Als ich mit dem Testen fortfuhr, bemerkte ich, dass st?ndig eine 308 auf der Registerkarte ?Netzwerk“ angezeigt wurde. Aber warum erschien sie? Nun, denn beim Erweitern von Liquid wurde am Ende ein Doppelbalken vor den Abzeichen angezeigt.

Ich habe ursprünglich Folgendes bekommen:

  • https://gitlab.com/computaria/blog//badges/master/pipeline.svg

Mit Weiterleitung an:

  • https://gitlab.com/computaria/blog/badges/master/pipeline.svg

Und das fing an, mich zu st?ren, als ich analysierte, ob ich Cache verwendete oder nicht. Um dieses Problem zu l?sen, sollte ich den doppelten Schr?gstrich entfernen. Ich k?nnte es einfach loswerden, indem ich den Schr?gstrich nicht direkt nach dem zu erweiternden Liquid-Wert einfüge, denn schlie?lich k?nnte ich von vornherein wissen, dass die Zeichenfolge {{site.repository.base}} mit / endet. Aber nur für den Fall, dass es nicht wirklich schadet, diesen Schr?gstrich vor /badges/master/pipeline.svg zu setzen, es ist sogar ein Indikator für mich selbst als Leser.

Aber da ich mich nicht auf Vorkenntnisse verlassen m?chte, ob diese Bar existiert oder nicht, hatte ich dafür zwei M?glichkeiten:

  • Behandeln Sie die Flüssigkeitsausdehnungsstufe, um den Endschr?gstrich zu entfernen
  • erledigen Sie die Erstellung dieser Zeichenfolge auf Javascript-Ebene

Die JavaScript-Seite erschien mir einfacher. Ersetzen Sie also einfach // durch /, richtig? Hmmm, nein. Da das Protokoll vor ?://“ erscheint, würde allein diese grobe Ersetzung dazu führen, dass die URL so beginnt: https://computaria.gitlab.io. Um dies zu umgehen, nehme ich die folgende Ersetzung vor:

<script>
    const queryParams = new URLSearchParams(window.location.search.substring(1));
    const pipeline = document.getElementById("pipeline")

    if (queryParams.get("status") === "true") {
        pipeline.style.display = "block"
    } else {
        pipeline.remove()
    }
</script>
<div>



<p>E... falhou. Por quê? Porque no momento que a fun??o rodar ainda n?o tem definido quem é o elemento com id pipeline. Ent?o preciso mudar o ciclo de vida para rodar o script apenas quando a página for carregada. Basta colocar o <script defer>, certo? Bem, n?o. Porque defer n?o funciona bem com inline, apenas com arquivo de source explícito. Veja a documenta??o.

<p>Ou seja, precisei colocar o arquivo JavaScript explicitamente para o Computaria. Como a priori tudo que está solto na pasta do blog é colocado como asset disponível para o Jekyll publicar, criei o js/pipeline-loader.js:<br>
</p>

<pre class="brush:php;toolbar:false"><script src="{{ "/js/pipeline-loader.js" | prepend: site.baseurl }}" defer>
</script>
<div>



<p>E no script:<br>
</p>

<pre class="brush:php;toolbar:false">const queryParams = new URLSearchParams(window.location.search.substring(1));
const pipeline = document.getElementById("pipeline")

if (queryParams.get("status") === "true") {
    pipeline.style.display = "block"
} else {
    pipeline.remove()
}

Aufschlüsselung:

  • Anstelle des Ersatzes geben Sie ein, was in der ?ersten Gruppe“ gefunden wurde, gefolgt von einem Schr?gstrich
  • Regex-Matches: alles andere als: (in einer Gruppe), Schr?gstrich, Schr?gstrich

Mit dieser ?nderung hat https:// keine übereinstimmung mit ([^:])//, aber alle anderen Vorkommen von // im Pfad haben eine perfekte übereinstimmung, da dies nicht der Fall ist vor einem stehen :. Genauer gesagt k?nnte ich daran arbeiten, die übereinstimmung im Abfrageparameter/-fragment zu verhindern, aber das erschien mir zu übertrieben.

Proof of Concept: Cacheloses Laden

Okay, nachdem wir die Details zur Platzierung und zum Verriegelungsmechanismus definiert haben, ben?tigen wir einen Nachlademechanismus. Erster Versuch: einfach ein neues Bildelement erstellen. Aber trotzdem, wie? Ideal w?re ?nach einiger Zeit“. Das gibt mir also zwei M?glichkeiten, um es besser zu sagen:

  • setTimeout
  • setInterval

Okay, lass uns weitermachen mit ?Was bewirkt das?“ setTimeout empf?ngt einen Befehl, der nach einem Zeitintervall UND auch dem angegebenen Intervall ausgeführt wird. Sie erhalten eine ID zurück, die Sie mit ?clearTimeout“ entfernen k?nnen. Um den Aufruf zu wiederholen, muss setTimeout am Ende erneut aufgerufen werden.

setInterval ist fast dasselbe, nur wird der Befehl immer nach dem Zeitintervall ausgeführt. Die Rückgabe sollte eine ID sein, die Sie zum Entfernen mit ?clearInterval“ aufrufen würden, aber laut Dokumentation funktioniert es auch mit ?clearTimeout“ (nur für den Fall, vertrauen Sie ihm nicht, verwenden Sie die mit der richtigen Semantik).

Verwenden von setTimeout

Sollen wir einen Schleifenaufruf mit setTimeout erstellen? Wie w?re es, wenn Sie das Wort Kürbis fünfmal in ein Textfeld drucken würden? Ich werde einen Textbereich für dieses Experiment einfügen:

const queryParams = new URLSearchParams(window.location.search.substring(1));

if (queryParams.get("status") === "true") {
    console.log("oba, vamos exibir o pipeline!")
} else {
    console.log("nops, n?o vamos exibir nada")
}

Ok, ich habe 3 Funktionen, die ich gerne über HTML erreichen m?chte. Und sie spalten (wenn auch nur geringfügig) einen Staat. Ich bin ein Fan davon, Dinge zu verstecken, daher m?chte ich nicht, dass dieser Status au?erhalb des

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1488
72
Wie funktioniert die Müllsammlung in JavaScript? Wie funktioniert die Müllsammlung in JavaScript? Jul 04, 2025 am 12:42 AM

Der Müllsammlung von JavaScript verwaltet den Speicher automatisch über einen Tag-Clearing-Algorithmus, um das Risiko eines Speicherlecks zu verringern. Der Motor durchquert und markiert das aktive Objekt aus dem Wurzelobjekt, und nicht markiert wird als Müll behandelt und gel?scht. Wenn das Objekt beispielsweise nicht mehr referenziert wird (z. B. die Variable nach NULL), wird es in der n?chsten Runde des Recyclings freigegeben. Zu den h?ufigen Ursachen für Speicherlecks geh?ren: ① Unger?te Timer oder Event -H?rer; ② Verweise auf externe Variablen in Schlie?ungen; ③ Globale Variablen halten weiterhin eine gro?e Datenmenge. Der V8 -Motor optimiert die Recyclingeffizienz durch Strategien wie Recycling von Generationen, inkrementelle Markierung, paralleles/gleichzeitiges Recycling und verkürzt die Hauptblockierungszeit. W?hrend der Entwicklung sollten unn?tige globale Referenzen vermieden und Objektverb?nde umgehend dekoriert werden, um die Leistung und Stabilit?t zu verbessern.

Wie stelle ich eine HTTP -Anforderung in node.js? Wie stelle ich eine HTTP -Anforderung in node.js? Jul 13, 2025 am 02:18 AM

Es gibt drei g?ngige M?glichkeiten, HTTP-Anforderungen in Node.js zu initiieren: Verwenden Sie integrierte Module, Axios und Knotenfetch. 1. Verwenden Sie das integrierte HTTP/HTTPS-Modul ohne Abh?ngigkeiten, das für grundlegende Szenarien geeignet ist, jedoch eine manuelle Verarbeitung von Datengen?hten und Fehlerüberwachung erfordert, z. 2.Axios ist eine auf Versprechen basierende Bibliothek von Drittanbietern. Es verfügt über eine kurze Syntax und leistungsstarke Funktionen, unterstützt Async/Auseait, automatische JSON -Konvertierung, Interceptor usw. Es wird empfohlen, asynchrone Anforderungsvorg?nge zu vereinfachen. 3.Node-Fetch bietet einen Stil ?hnlich dem Browser-Abruf, basierend auf Versprechen und einfacher Syntax

JavaScript -Datentypen: Primitive VS -Referenz JavaScript -Datentypen: Primitive VS -Referenz Jul 13, 2025 am 02:43 AM

JavaScript -Datentypen sind in primitive Typen und Referenztypen unterteilt. Zu den primitiven Typen geh?ren String, Anzahl, Boolesche, Null, undefiniertes und Symbol. Die Werte sind unver?nderlich und Kopien werden bei der Zuweisung von Werten kopiert, sodass sie sich nicht gegenseitig beeinflussen. Referenztypen wie Objekte, Arrays und Funktionen speichern Speicheradressen, und Variablen, die auf dasselbe Objekt zeigen, wirkt sich gegenseitig aus. Typeof und Instanz k?nnen verwendet werden, um die Typen zu bestimmen, aber auf die historischen Probleme der TypeOfnull zu achten. Das Verst?ndnis dieser beiden Arten von Unterschieden kann dazu beitragen, einen stabileren und zuverl?ssigeren Code zu schreiben.

React vs Angular vs Vue: Welches JS -Framework ist am besten? React vs Angular vs Vue: Welches JS -Framework ist am besten? Jul 05, 2025 am 02:24 AM

Welches JavaScript -Framework ist die beste Wahl? Die Antwort besteht darin, die am besten geeigneten nach Ihren Bedürfnissen zu w?hlen. 1.React ist flexibel und kostenlos und für mittlere und gro?e Projekte geeignet, für die hohe Anpassungs- und Teamarchitekturf?higkeiten erforderlich sind. 2. Angular bietet vollst?ndige L?sungen, die für Anwendungen auf Unternehmensebene und langfristige Wartung geeignet sind. 3.. Vue ist einfach zu bedienen, geeignet für kleine und mittlere Projekte oder schnelle Entwicklung. Unabh?ngig davon, ob es einen technologischen Stack, die Teamgr??e, der Projektlebenszyklus gibt und ob SSR erforderlich ist, sind auch wichtige Faktoren für die Auswahl eines Rahmens. Kurz gesagt, es gibt keinen absolut besten Rahmen, die beste Wahl ist die, die Ihren Bedürfnissen entspricht.

JavaScript Time Object, jemand erstellt eine EACTEXE, schnellere Website auf Google Chrome usw. JavaScript Time Object, jemand erstellt eine EACTEXE, schnellere Website auf Google Chrome usw. Jul 08, 2025 pm 02:27 PM

Hallo, JavaScript -Entwickler! Willkommen in den JavaScript -Nachrichten dieser Woche! Diese Woche konzentrieren wir uns auf: Oracas Markenstreit mit Deno, neue JavaScript -Zeitobjekte werden von Browsern, Google Chrome -Updates und einigen leistungsstarken Entwickler -Tools unterstützt. Fangen wir an! Der Markenstreit von Oracle mit dem Versuch von Deno Oracle, ein "JavaScript" -Marke zu registrieren, hat Kontroversen verursacht. Ryan Dahl, der Sch?pfer von Node.js und Deno, hat eine Petition zur Absage der Marke eingereicht, und er glaubt, dass JavaScript ein offener Standard ist und nicht von Oracle verwendet werden sollte

Das Verst?ndnis sofort auf Funktionsausdrücke (IIFE) in JavaScript aufzurufen Das Verst?ndnis sofort auf Funktionsausdrücke (IIFE) in JavaScript aufzurufen Jul 04, 2025 am 02:42 AM

IIFE (SofortinvokedFunctionExpression) ist ein Funktionsausdruck, der unmittelbar nach der Definition ausgeführt wird und zum Isolieren von Variablen und zur Vermeidung des kontaminierenden globalen Bereichs verwendet wird. Es wird aufgerufen, indem die Funktion in Klammern umwickelt ist, um sie zu einem Ausdruck und einem Paar von Klammern zu machen, gefolgt von ihr, wie z. B. (function () {/code/}) ();. Zu den Kernverwendungen geh?ren: 1.. Variable Konflikte vermeiden und die Duplikation der Benennung zwischen mehreren Skripten verhindern; 2. Erstellen Sie einen privaten Bereich, um die internen Variablen unsichtbar zu machen. 3.. Modularer Code, um die Initialisierung zu erleichtern, ohne zu viele Variablen freizulegen. Zu den allgemeinen Schreibmethoden geh?ren Versionen, die mit Parametern und Versionen der ES6 -Pfeilfunktion übergeben wurden. Beachten Sie jedoch, dass Ausdrücke und Krawatten verwendet werden müssen.

Handlingversprechen: Verkettung, Fehlerbehandlung und Versprechenkombinatoren in JavaScript Handlingversprechen: Verkettung, Fehlerbehandlung und Versprechenkombinatoren in JavaScript Jul 08, 2025 am 02:40 AM

Versprechen ist der Kernmechanismus für den Umgang mit asynchronen Operationen in JavaScript. Das Verst?ndnis von Kettenanrufen, Fehlerbehebung und Kombination ist der Schlüssel zum Beherrschen ihrer Anwendungen. 1. Der Kettenaufruf gibt ein neues Versprechen durch .then () zurück, um asynchrone Prozessverkampferung zu realisieren. Jeder. Dann () erh?lt das vorherige Ergebnis und kann einen Wert oder ein Versprechen zurückgeben; 2. Die Fehlerbehandlung sollte .Catch () verwenden, um Ausnahmen zu fangen, um stille Ausf?lle zu vermeiden, und den Standardwert im Fang zurückgeben, um den Prozess fortzusetzen. 3. Combinatoren wie Promise.All () (erfolgreich erfolgreich erfolgreich nach allen Erfolg), Versprechen.Race () (Die erste Fertigstellung wird zurückgegeben) und Versprechen.Allsettled () (Warten auf alle Fertigstellungen)

Was ist die Cache -API und wie wird sie bei Dienstangestellten verwendet? Was ist die Cache -API und wie wird sie bei Dienstangestellten verwendet? Jul 08, 2025 am 02:43 AM

Cacheapi ist ein Tool, das der Browser zur Cache -Netzwerkanfragen bereitstellt, das h?ufig in Verbindung mit dem Servicearbeiter verwendet wird, um die Leistung der Website und die Offline -Erfahrung zu verbessern. 1. Es erm?glicht Entwicklern, Ressourcen wie Skripte, Stilbl?tter, Bilder usw. Zu speichern; 2. Es kann die Cache -Antworten entsprechend den Anfragen übereinstimmen. 3. Es unterstützt das L?schen bestimmter Caches oder das L?schen des gesamten Cache. 4.. Es kann Cache -Priorit?ts- oder Netzwerkpriorit?tsstrategien durch Servicearbeiter implementieren, die sich auf Fetch -Ereignisse anh?ren. 5. Es wird h?ufig für die Offline -Unterstützung verwendet, die wiederholte Zugriffsgeschwindigkeit, die Vorspannungs -Schlüsselressourcen und den Inhalt des Hintergrundaktualisierungss beschleunigen. 6. Wenn Sie es verwenden, müssen Sie auf die Cache -Versionskontrolle, Speicherbeschr?nkungen und den Unterschied zum HTTP -Caching -Mechanismus achten.

See all articles