为啥使用 DOMDocument 会使网站加载速度变慢?
Posted
技术标签:
【中文标题】为啥使用 DOMDocument 会使网站加载速度变慢?【英文标题】:Why using DOMDocument makes site load slower?为什么使用 DOMDocument 会使网站加载速度变慢? 【发布时间】:2021-06-19 07:40:49 【问题描述】:我正在使用带有 xpath 的 DOMDocument 从外部(快速)网站将一些数据加载到我的网站。
现在我使用 4 个网址(请参见下文)。我需要增加到 8 个 url。
我注意到,您添加的内容越多,网站加载速度就越慢。
有什么方法可以使用 xpath 来加快加载速度?
或者,也许至少有某种方法可以在 website1(子网站)上加载数据,并在加载时将数据包含到我的主网站。
任何提示都会被采纳。
<?php
$parent_title = get_the_title( $post->post_parent );
$html_string = file_get_contents('weburladresshere');
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html_string);
libxml_clear_errors();
$xpath = new DOMXpath($dom);
$values = array();
$row = $xpath->query('myquery');
foreach($row as $value)
print($value->nodeValue);
?>
【问题讨论】:
【参考方案1】:速度很慢,因为您要加载外部网站。不要及时加载它们,而是尝试通过另一个 php 作业“在后台”加载它们并将它们保存到临时文件中。然后,您可以从本地临时文件加载 html,这比通过 file_get_contents
加载远程 $html_string
更快。
扩展答案
在这里您可以看到一个非常轻量级的示例,说明如何处理它。
function getPageContent($url)
$filename = md5($url).'.tmp';
// implement your extended cache logic here
// for example: store it just for 60 seconds...
if(!file_exists($filename))
file_put_contents($filename, $url);
return file_get_contents($filename);
function businessLogic($url)
$htmlContent = getPageContent($url);
// your business logic here
businessLogic($url);
【讨论】:
嘿 Roman,这可能正是我要找的。您能否详细说明在哪里可以找到更多相关信息。或者给我一些关于从哪里开始的骨头(官方 php 页面)。我对 php 完全陌生。谢谢 早上好。我将在今天晚些时候为您提供详细的答复。 ✌️ 我已经更新了我的答案并提供了一个代码示例。以上是关于为啥使用 DOMDocument 会使网站加载速度变慢?的主要内容,如果未能解决你的问题,请参考以下文章