


Reduzieren Sie die Anzahl der Anfragen an den Server durch Keep-Alive von Vue
In diesem Artikel wird hauptsächlich die Verwendung von Keep-Alive vorgestellt, um die Anzahl der Anfragen an den Server zu reduzieren. Der Artikel stellt auch die Punkte vor, die beim Aktivieren von Keep-Alive im Vue-Routing zu beachten sind dazu
Sehen wir uns an, wie man die Anzahl der Anfragen an den Server durch Keep-Alive von Vue reduzieren kann
VUE2.0 bietet eine Keep-Alive-Methode, die verwendet werden kann um Komponenten zwischenzuspeichern und das mehrfache Laden entsprechender Komponenten zu vermeiden. Reduzieren Sie den Leistungsverbrauch. Beispielsweise wurden die Daten einer Seite, darunter Bilder, Text usw., vom Benutzer geladen und der Benutzer springt dann durch Anklicken auf eine andere Oberfläche. Kehren Sie dann von einer anderen Schnittstelle zur ursprünglichen Schnittstelle zurück. Wenn es nicht gesetzt ist, werden die Informationen der ursprünglichen Schnittstelle erneut vom Server angefordert. Das von vue bereitgestellte Keep-Alive kann die angeforderten Daten der Seite speichern, die Anzahl der Anfragen reduzieren und die Benutzererfahrung verbessern.
Cache-Komponenten werden in zwei Typen unterteilt: Komponenten, die die gesamten Seiten der Website zwischenspeichern, und Komponenten, die Teilseiten zwischenspeichern.
1. Alle Seiten zwischenspeichern, geeignet für Situationen, in denen jede Seite eine Anfrage hat. Die Methode lautet wie folgt: Umschließen Sie die Router-Ansicht, die zwischengespeichert werden muss, mit dem Keep-Alive-Tag.
<keep-alive> <router-view></router-view> </keep-alive>
Durch Schreiben der ersten Triggeranforderung in den erstellten Hook kann Caching erreicht werden. Wenn Sie beispielsweise von der Listenseite zur Detailseite wechseln, befinden Sie sich bei Ihrer Rückkehr immer noch auf der Originalseite.
2. Das Zwischenspeichern einiger Komponenten oder Seiten kann durch die Verwendung des router.meta-Attributs durch Beurteilung erreicht werden. Die Methode ist wie folgt: Der Name impliziert die Bedeutung, „einschließen“ bedeutet „einschließen“ und „ausschließen“ bedeutet „ausschließen“. Hier müssen Sie den Namen der Komponente zum Festlegen verwenden, daher muss der Name hinzugefügt werden. Das Hinzufügen der Komponenten a und b erfordert Caching, während die Komponenten c und d kein Caching erfordern. Es lautet wie folgt:
<keep-alive v-if="$route.meta.keepAlive"> <router-view></router-view> </keep-alive> <router-view v-if="! $route.meta.keepAlive"></router-view>
Die Optimierung von Vue-Projekten kann auch durch das Laden von Komponenten bei Bedarf erreicht werden, genau wie das verzögerte Laden von Bildern, wenn der Kunde diese Bilder überhaupt nicht sieht, wir aber Öffnen Sie die Seite, wenn alles geladen ist. Dadurch wird die Anforderungszeit erheblich verlängert und die Benutzererfahrung verringert. Lazy Loading wird auf vielen Websites verwendet, z. B. auf Shopping-Websites wie Taobao, JD.com usw., die viele Bildlinks haben. Wenn Sie schnell nach unten scrollen, wird möglicherweise der Bildladezustand angezeigt.
Ergänzung:
Zu beachtende Punkte, wenn Vue-Routing Keep-Alive aktiviert
Dies Dies ist keine Geschäftsanforderung, aber da jedes Mal, wenn ich die Seite betrete, das DOM neu gerendert wird und dann die Daten abgerufen werden, um das DOM zu aktualisieren, halte ich es als Front-End-Ingenieur für notwendig, die Ladelogik zu optimieren . Vue bietet zufällig die Keep-Alive-Funktion, also habe ich es ausprobiert. Natürlich wird nichts reibungslos verlaufen, und Unebenheiten und Unebenheiten auf der Straße sind unvermeidlich. Deshalb schreibe ich die hier aufgetretenen Probleme auf und hoffe, dass die Leute, die diesen Artikel lesen, helfen können. ps: Das ist nicht schwierig. HTML-Teil:
routers:[ { path: '/home', name: home, meta:{keepAlive: true} // 设置为true表示需要缓存,不设置或者false表示不需要缓存 } ]
Der Seitenlebenszyklus-Hook ist wie in dargestellt der Code oben, Diese vier sind die am häufigsten verwendeten Teile. In diesem Teil ist zu beachten, dass bei der Einführung von Keep-Alive beim ersten Aufrufen der Seite die Auslösesequenz des Hooks erstellt->gemountet->aktiviert und beim Beenden deaktiviert wird. Bei erneuter Eingabe (vorwärts oder rückwärts) wird nur aktiviert ausgelöst. Wir wissen, dass die Seitenvorlage nach dem Keep-Alive zum ersten Mal initialisiert und in ein HTML-Fragment analysiert wird. Bei der erneuten Eingabe werden die Daten im Speicher nicht erneut analysiert, sondern gelesen. Das heißt, es wird nur verwendet, wenn sich die Daten ändern. Daher sollten auch die beim Betreten der Seite erfassten Daten aktiviert werden. Nachdem die Daten heruntergeladen wurden, sollte auch die manuelle Bedienung des DOM aktiviert werden, damit sie wirksam wird.
Sie sollten also eine Kopie des Datenerfassungscodes im aktivierten Zustand belassen oder den erstellten Teil weglassen und den erstellten Code direkt in den aktivierten Zustand übertragen.
2. Die Daten in $route können nicht gelesen werdenDie vorherige Schreibmethode bestand darin, die erforderlichen $route-Daten in Daten zuzuweisen, um die Verwendung anderer Methoden zu erleichtern. Aber nach der Verwendung von Keep-Alive müssen die Daten auf der Seite eingegeben und erneut aktiviert werden, um den Zweck der Aktualisierung zu erreichen. Definieren Sie eine initData-Methode und starten Sie sie dann aktiviert.
<keep-alive include="a,b">
<component></component>
</keep-alive>
<keep-alive exclude="c,d">
<component></component>
</keep-alive>
需求描述:当页面在进行轮播操作的时候希望能记录当前显示的轮播ID(activeIndex)。当进入下一个页面再返回的时候能记住之前的选择,将轮播打到之前的ID位置。所以我想将这部分信息固化在url中,轮播发生变化时,修改URL。这样实现比较符最小修改原则,其余页面不用变动。
之前的写法是将activeIndex放在 $route 的query中,当轮播后,将
activeIndex的值存入 $route.query.activeIndex 中,然后 $router.replace 当前路由,理论上应该能发生变化,但实际没有。
查看文档后说, $route 是只读模式。当然,对象部分是他监管不到的,我修改了并不是正统的做法。
神奇的地方来了:当我将activeIndex记在params中,轮播变动修改params中的参数,然后 $router.replace 当前路由,却能发生对应的变化。代码如下:
let swiperInstance = new Swiper('#swiper', { pagination: '.swiper-pagination', paginationClickable: false, initialSlide: activeIndex, onSlideChangeEnd: function (swiper) { let _activeIndex = swiper.activeIndex; _this.$route.params.activeIndex = _activeIndex; // $router我放到了window上方便调用 window.$router.replace({ name: _this.$route.name, params: _this.$route.params, query: _this.$route.query }); // 根据activeIndex,在这里初始化下面显示的数据 _this.transferDetail = _this.allData.plans[_activeIndex].segments; _this.clearBusDetailFoldState(); } });
4. 事件如何处理
估计你也能猜到,发生的问题是事件绑定了很多次,比如上传点击input监听change事件,突然显示了多张相同图片的问题。
也就是说,DOM在编译后就缓存在内容中了,如果再次进入还再进行事件绑定初始化则就会发生这个问题。
解决办法:在mounted中绑定事件,因为这个只执行一次,并且DOM已准备好。如果插件绑定后还要再执行一下事件的handler函数的话,那就提取出来,放在activated中执行。比如:根据输入内容自动增长textarea的高度,这部分需要监听textarea的input和change事件,并且页面进入后还要再次执行一次handler函数,更新textarea高度(避免上次输入的影响)。
5. 地图组件处理
想必这是使用 keep-alive 最直接的性能表现。之前是进入地图页面后进行地图渲染+线路标记;现在是清除以前的线路标记绘制新的线路,性能优化可想而知!
我这里使用的是高德地图,在mounted中初始化map,代码示例如下:
export default { name: 'transferMap', data: function () { return { map: null, } }, methods: { initData: function () {}, searchTransfer: function (type) {}, // 地图渲染 这个在transfer-map.html中使用 renderTransferMap: function (transferMap) {} }, mounted: function () { this.map = new AMap.Map("container", { showBuildingBlock: true, animateEnable: true, resizeEnable: true, zoom: 12 //地图显示的缩放级别 }); }, activated: function () { let _this = this; _this.initData(); // 设置title setDocumentTitle('换乘地图'); _this.searchTransfer(_this.policyType).then(function (result) { // 数据加载完成 // 换乘地图页面 let transferMap = result.plans[_this.activeIndex]; transferMap.origin = result.origin; transferMap.destination = result.destination; // 填数据 _this.transferMap = transferMap; // 地图渲染 _this.renderTransferMap(transferMap); }); }, deactivated: function () { // 清理地图之前的标记 this.map.clearMap(); }, }
6. document.title修改
这个不是 keep-alive 的问题,不过我也在这里分享下。
问题是,使用下面这段方法,可以修改Title,但是页面来回切换多次后就不生效了,我也不知道为啥,放到setTimeout中就直接不执行。
document.title = '页面名称';下面是使用2种环境的修复方法:
纯js实现
function setDocumentTitle(title) { "use strict"; //以下代码可以解决以上问题,不依赖jq setTimeout(function () { //利用iframe的onload事件刷新页面 document.title = title; var iframe = document.createElement('iframe'); iframe.src = '/favicon.ico'; // 必须 iframe.style.visibility = 'hidden'; iframe.style.width = '1px'; iframe.style.height = '1px'; iframe.onload = function () { setTimeout(function () { document.body.removeChild(iframe); }, 0); }; document.body.appendChild(iframe); }, 0); }
jQuery/Zepto实现
function setDocumentTitle(title) { //需要jQuery var $body = $('body'); document.title = title; // hack在微信等webview中无法修改document.title的情况 var $iframe = $('<iframe src="/favicon.ico"></iframe>'); $iframe.on('load', function () { setTimeout(function () { $iframe.off('load').remove(); }, 0); }).appendTo($body); }
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
Das obige ist der detaillierte Inhalt vonReduzieren Sie die Anzahl der Anfragen an den Server durch Keep-Alive von Vue. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Lösung: 1. Überprüfen Sie die eMule-Einstellungen, um sicherzustellen, dass Sie die richtige Serveradresse und Portnummer eingegeben haben. 2. Überprüfen Sie die Netzwerkverbindung, stellen Sie sicher, dass der Computer mit dem Internet verbunden ist, und setzen Sie den Router zurück Wenn Ihre Einstellungen kein Problem mit der Netzwerkverbindung sind, müssen Sie überprüfen, ob der Server online ist. 4. Aktualisieren Sie die eMule-Version, besuchen Sie die offizielle Website von eMule und laden Sie die neueste Version der eMule-Software herunter. 5. Suchen Sie Hilfe.

Was soll ich tun, wenn der RPC-Server nicht verfügbar ist und auf dem Desktop nicht darauf zugegriffen werden kann? In den letzten Jahren sind Computer und das Internet in jeden Winkel unseres Lebens vorgedrungen. Als Technologie für zentralisierte Datenverarbeitung und gemeinsame Nutzung von Ressourcen spielt Remote Procedure Call (RPC) eine entscheidende Rolle in der Netzwerkkommunikation. Manchmal kann es jedoch vorkommen, dass der RPC-Server nicht verfügbar ist und der Desktop nicht aufgerufen werden kann. In diesem Artikel werden einige mögliche Ursachen für dieses Problem beschrieben und Lösungen bereitgestellt. Zuerst müssen wir verstehen, warum der RPC-Server nicht verfügbar ist. RPC-Server ist ein

Als LINUX-Benutzer müssen wir häufig verschiedene Software und Server unter CentOS installieren. In diesem Artikel wird detailliert beschrieben, wie Sie Fuse installieren und einen Server unter CentOS einrichten, damit Sie die entsprechenden Vorgänge reibungslos abschließen können. Die Installation von FuseFuse unter CentOS ist ein User-Space-Dateisystem-Framework, mit dem unprivilegierte Benutzer über ein benutzerdefiniertes Dateisystem auf das Dateisystem zugreifen und es bedienen können. Die Installation von Fuse unter CentOS ist sehr einfach. Befolgen Sie einfach die folgenden Schritte: 1. Öffnen Sie das Terminal und melden Sie sich an Root-Benutzer. 2. Verwenden Sie den folgenden Befehl, um das Sicherungspaket zu installieren: „yuminstallfuse3“. Bestätigen Sie die Eingabeaufforderungen während des Installationsvorgangs und geben Sie „y“ ein, um fortzufahren. 4. Installation abgeschlossen

Die Rolle eines DHCP-Relays besteht darin, empfangene DHCP-Pakete an einen anderen DHCP-Server im Netzwerk weiterzuleiten, auch wenn sich die beiden Server in unterschiedlichen Subnetzen befinden. Durch die Verwendung eines DHCP-Relays können Sie einen zentralen DHCP-Server im Netzwerkzentrum bereitstellen und ihn verwenden, um allen Netzwerksubnetzen/VLANs dynamisch IP-Adressen zuzuweisen. Dnsmasq ist ein häufig verwendeter DNS- und DHCP-Protokollserver, der als DHCP-Relay-Server konfiguriert werden kann, um die Verwaltung dynamischer Hostkonfigurationen im Netzwerk zu unterstützen. In diesem Artikel zeigen wir Ihnen, wie Sie dnsmasq als DHCP-Relay-Server konfigurieren. Inhaltsthemen: Netzwerktopologie Konfigurieren statischer IP-Adressen auf einem DHCP-Relay D auf einem zentralen DHCP-Server

Bei der Netzwerkdatenübertragung spielen IP-Proxyserver eine wichtige Rolle. Sie helfen Benutzern dabei, ihre echten IP-Adressen zu verbergen, ihre Privatsphäre zu schützen und die Zugriffsgeschwindigkeit zu verbessern. In diesem Artikel stellen wir den Best-Practice-Leitfaden zum Aufbau eines IP-Proxyservers mit PHP vor und stellen spezifische Codebeispiele bereit. Was ist ein IP-Proxyserver? Ein IP-Proxyserver ist ein Zwischenserver zwischen dem Benutzer und dem Zielserver. Er fungiert als Übertragungsstation zwischen dem Benutzer und dem Zielserver und leitet die Anforderungen und Antworten des Benutzers weiter. Durch die Verwendung eines IP-Proxyservers

Zu den Methoden zum Anzeigen des Serverstatus gehören Befehlszeilentools, grafische Schnittstellentools, Überwachungstools, Protokolldateien und Remoteverwaltungstools. Detaillierte Einführung: 1. Verwenden Sie Befehlszeilentools, um den Status des Servers anzuzeigen. 2. Verwenden Sie grafische Schnittstellentools Vom System bereitgestellte Schnittstellentools zum Anzeigen des Serverstatus. 3. Verwenden Sie Überwachungstools, um den Serverstatus usw. zu überwachen.

Zu den Schritten zum Starten des TFTP-Servers gehören die Auswahl der TFTP-Serversoftware, das Herunterladen und Installieren der Software, das Konfigurieren des TFTP-Servers sowie das Starten und Testen des Servers. Detaillierte Einführung: 1. Bei der Auswahl der TFTP-Serversoftware müssen Sie zunächst die TFTP-Serversoftware auswählen, die Ihren Anforderungen entspricht. Derzeit stehen zahlreiche TFTP-Serversoftware zur Auswahl, z. B. Tftpd32, PumpKIN, tftp-hpa usw. die alle einfache und benutzerfreundliche Schnittstellen- und Konfigurationsoptionen bieten. 2. Laden Sie TFTP-Serversoftware usw. herunter und installieren Sie sie.

Was soll ich tun, wenn ich das Spiel nicht betreten kann, während der Epic-Server offline ist? Dieses Problem muss bei vielen Freunden aufgetreten sein. Wenn diese Meldung angezeigt wird, kann das Problem normalerweise durch Störungen durch das Netzwerk und die Sicherheitssoftware verursacht werden Ich möchte die Lösung mit Ihnen teilen und hoffe, dass das heutige Software-Tutorial Ihnen bei der Lösung des Problems helfen kann. Was ist zu tun, wenn der Epic-Server nicht auf das Spiel zugreifen kann, wenn er offline ist: 1. Möglicherweise wird er durch Sicherheitssoftware gestört. Schließen Sie die Spielplattform und die Sicherheitssoftware und starten Sie sie dann neu. 2. Der zweite Grund ist, dass das Netzwerk zu stark schwankt. Versuchen Sie, den Router neu zu starten, um zu sehen, ob er funktioniert. Wenn die Bedingungen in Ordnung sind, können Sie versuchen, das 5g-Mobilfunknetz für den Betrieb zu verwenden. 3. Dann könnten es noch mehr sein
