Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung der Vorteile und Codebeispiele der PHP-Webseiten-Caching-Technologie

Ausführliche Erläuterung der Vorteile und Codebeispiele der PHP-Webseiten-Caching-Technologie

coldplay.xixi
coldplay.xixinach vorne
2020-08-01 16:25:022433Durchsuche

Ausführliche Erläuterung der Vorteile und Codebeispiele der PHP-Webseiten-Caching-Technologie

Statisches Frontend: Analysieren Sie die dynamische Seite und speichern Sie sie als statische Seite

Dateicache: Speichern Sie die Abfrageergebnisse als Datei, XML

Speichercache: Memcache

PHP-Cache: Er kann zum Speichern von Daten in verschiedenen Formaten verwendet werden, einschließlich Bildern, Videos, Dateien und Datenbanksuchergebnissen. Einfach ausgedrückt werden die Daten in den Speicher abgerufen und dann aus dem Speicher gelesen, wodurch die Lesegeschwindigkeit erheblich verbessert wird. Memcache ist ein Projekt von Danga. Es wurde ursprünglich entwickelt, um den Zugriff auf LiveJournal zu beschleunigen, und wurde später von vielen großen Websites übernommen. Memcached läuft auf einem oder mehreren Servern als Daemon und empfängt jederzeit Client-Verbindungen und -Vorgänge.

XCache ist ein Open-Source-Opcode-Cache/Optimierer, was bedeutet, dass er die Leistung von PHP auf Ihrem Server verbessern kann. Er vermeidet wiederholte Kompilierungsvorgänge, indem er die kompilierten PHP-Daten im gemeinsam genutzten Speicher puffert Code zur Erhöhung der Geschwindigkeit. Erhöht normalerweise die Seitengenerierungsrate um das Zwei- bis Fünffache und reduziert so die Serverlast.

****************** ********* **************************************** ******** ***************************************** ******* *****************************

1. Universelle Caching-Technologie:

Datencache: Der hier erwähnte Datencache bezieht sich auf den PHP-Cache-Mechanismus für Datenbankabfragen. Bei jedem Zugriff auf eine Seite wird zunächst festgestellt, ob die entsprechenden zwischengespeicherten Daten vorhanden sind. Die Datenbank ruft die Daten ab und serialisiert die Abfrageergebnisse und speichert sie in der Datei. In Zukunft werden dieselben Abfrageergebnisse direkt aus der Cache-Tabelle oder -Datei abgerufen.

Das am weitesten verbreitete Beispiel ist die Suchfunktion von Discuz, die die Ergebnis-ID in einer Tabelle zwischenspeichert und bei der nächsten Suche nach demselben Schlüsselwort zuerst die Cache-Tabelle durchsucht.

Wenn mehrere Tabellen verknüpft sind, wird der Inhalt der angehängten Tabelle in einem Array generiert und in einem Feld der Haupttabelle gespeichert. Der Vorteil davon ist Da nur eine Tabelle gelesen werden kann, ist der Nachteil, dass viele weitere Schritte erforderlich sind, um die beiden Daten zu synchronisieren. Der entscheidende Punkt hierbei ist die Datenbank.

2. Seiten-Cache:

Bei jedem Zugriff auf eine Seite wird zunächst geprüft, ob die entsprechende zwischengespeicherte Seitendatei vorhanden ist Öffnen Sie die Datenbank und rufen Sie Daten ab, zeigen Sie die Seite an und generieren Sie gleichzeitig eine Cache-Seitendatei, sodass die Seitendatei beim nächsten Besuch wirksam wird. (Template-Engines und einige gängige PHP-Caching-Mechanismusklassen im Internet verfügen normalerweise über diese Funktion)

3 Zeitgesteuertes Caching:

Überprüfen Sie, ob die Datei vorhanden ist und die Der Zeitstempel ist kleiner als die Einstellung. Die Ablaufzeit. Wenn der Zeitstempel der Dateiänderung größer als der aktuelle Zeitstempel abzüglich des Ablaufzeitstempels ist, verwenden Sie den Cache, andernfalls aktualisieren Sie den Cache.

4. Inhaltsgesteuertes Caching:

Wenn Daten eingefügt oder aktualisiert werden, muss der PHP-Cache-Mechanismus aktualisiert werden.

5. Statischer Cache:

Der hier erwähnte statische Cache bezieht sich auf statisch, der Textdateien wie HTML oder XML direkt generiert und bei Aktualisierungen neu generiert . , geeignet für Seiten, die sich nicht viel ändern, daher werde ich hier nicht darauf eingehen.

Der obige Inhalt ist eine Lösung auf Codeebene. Ich bin zu faul, ihn zu ändern. Der Inhalt ist ähnlich, er ist einfach zu machen und kann auf verschiedene Arten verwendet werden, aber wie folgt Inhalt ist für die End-End-Caching-Lösung des Servers, nicht auf Codeebene, erfordert die Zusammenarbeit mehrerer Parteien, um

6 zu erreichen. Speichercache:

Memcached ist ein Das hochleistungsfähige, verteilte Speicherobjekt-PHP-Caching-Mechanismussystem wird verwendet, um die Datenbanklast zu reduzieren und die Zugriffsgeschwindigkeit in dynamischen Anwendungen zu verbessern.

7. PHP-Puffer:

Es gibt Eaccelerator, APC, PHPA, Xcache, ich werde nicht darüber sprechen, suchen Sie selbst nach einem Haufen davon. Es ist in Ordnung zu wissen, dass dieses Ding existiert.

8 Dies gilt auch für Nicht-Code-Datenbanken, die diese Methode verwenden Zeit unten, 0,09xxx und dergleichen

9 Web-Cache basierend auf Reverse-Proxy:

Wie Nginx, SQUID, mod_proxy (Apache2 und höher sind in For unterteilt mod_proxy und mod_cache)

10. DNS-Abfrage:

, suchen Sie es selbst, wissen Sie einfach, dass dieses Ding existiert.
Ich weiß, dass einige große Websites wie Chinacache dies tun. Vereinfacht ausgedrückt handelt es sich dabei um mehrere Server, bei denen dieselbe Seite oder Datei auf verschiedenen Servern zwischengespeichert und entsprechend automatisch analysiert wird im Norden und Süden im Server.

Beispiel für PHP-Webseiten-Caching

  • ob_start():页面缓存开始的标志,此函数一下的内容直至ob_end_flush()或者ob_end_clean()都保存在页面缓存中;
  • ob_get_contents():用来获取页面缓存中的内容,获取到以后呢,我们就可以想怎么处理这些内容都行了,过滤字段啦,匹配内容啦,都可以~~~ :)
  • ob_end_flush():表示页面缓存结束。并且经我验证,缓存的内容将输出到当前页面上,也就是可以显示缓存内容。

用此三个php函数,就可以实现强大的功能。如果数据库查询量较大,可以用cache来解决这个问题。

首先,设定过期时间,如果要求缓存文件2个小时过期,就可以设定cache_time为3600*2;通过filectime()来获取缓存文件的创建时间(或 filemtime()获取修改时间),如果当前时间跟文件的创建时间超过限定的过期时间,就可以通过上面三个函数,首先从数据库中取出数据,然后开始缓存ob_start(),然后把要生成的页面的html代码写在缓存中,缓存结束后通过ob_get_contents()获取到缓存的内容,然后通过fwrite把缓存内容写到静态页面html。

如果未过期,直接读取cache中的静态页面即可,避免了大量的数据库访问。

<?php
$_time =10;
$dir="D:\\php\\";
 
function cache_start($_time, $dir)
{
 $cachefile = $dir.&#39;/&#39;.sha1($_SERVER[&#39;REQUEST_URI&#39;]).&#39;.html&#39;;
 $cachetime = $_time;
 ob_start();
 if(file_exists($cachefile) && (time()-filemtime($cachefile) < $cachetime))
 {
  include($cachefile);
  ob_end_flush();
  exit;
 }
}
 
function cache_end($dir)
{
 $cachefile = $dir.&#39;/&#39;.sha1($_SERVER[&#39;REQUEST_URI&#39;]).&#39;.html&#39;;
 $fp = fopen($cachefile, &#39;w&#39;);
 fwrite($fp, ob_get_contents());
 fclose($fp);
 ob_end_flush();
}
 
cache_start($_time, $dir);
//以下是输出的内容,放在cache_start和cache_end两个方法之间
for ($i=0;$i<5;$i++)
{
 echo $i;
 sleep(1);
}
cache_end($dir);
?>

相关学习推荐:PHP编程从入门到精通

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Vorteile und Codebeispiele der PHP-Webseiten-Caching-Technologie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:PHP-Funktion filesize()Nächster Artikel:PHP-Funktion filesize()