我有几个(24)外部xmlfeeds在我的首页上显示产品。有关供稿的详细信息,请参阅此stackoverflow question。每个Feed都显示一个产品,但每次有人访问我的网站时都需要很长时间才能加载这些Feed。 Feed每天更新一次。
缓存这些Feed的最佳方法是什么?我应该用mysql做什么或在本地保存xml文件。我不知道从哪里开始。我试过JG_Cache,但没有运气。
这是我使用的循环:
<?php
// get xml file contents
$xmlurl = get_post_meta( get_the_ID( ), 'plus_xmlfeed', true );
if ( !empty( $xmlurl ) ){
$xml = simplexml_load_file($xmlurl);
}
$xml->product->name = substr($xml->product->name, 0, 30).'...';
$desc = substr($xml->product->name, 0, 50).'';
?>
<li class="span3">
<div class="thumbnail">
<a href="<?php echo $xml->product->productURL ;?>">
<center><img src="<?php echo get_template_directory_uri(); ?>/img/logos/<?php echo get_post_meta(get_the_ID( ), 'plus_logos', true); ?>.gif"/></center>
<center><img class="mainimg" alt="" src="<?php echo $xml->product->imageURL ;?>"/></center>
</a>
<div class="caption">
<h5><a href="<?php echo $xml->product->productURL ;?>"><?php echo $xml->product->name; ?></a></h5>
<div class="maindesc half clearfix"><div class="prijs">€ <?php echo $xml->product->price ;?></div><strike style="color: rgb(248, 148, 6);">
<?php
foreach ($xml->product->additional->field as $field) {
switch((string) $field['name']) {
case 'price_advice':
echo '€ ' .$field. '';
break;
case 'fromPrice':
echo '€ ' .$field. '';
break;
case 'oldPrice':
echo '€ ' .$field. '';
break;
case 'from_price':
echo '€ ' .$field. '';
break;
case 'adviesprijs':
echo '€ ' .$field. '';
break;
case 'advice_price':
echo '€ ' .$field. '';
break;
case 'Fromprice':
echo '€ ' .$field. '';
break;
case 'recommendedPrice':
echo '€ ' .$field. '';
break;
}
}
?>
</strike>
<p style="color: rgb(153, 153, 153);"><?php echo $desc; ?></p></div>
<div class="btn-group bot"><div class="pull-right"> </div><a class="btn btn-primary" href="<?php echo $xml->product->productURL ;?>">Kopen</a> <a class="btn" href="#<?php echo 'modal_'.get_the_ID();?>">Info</a></div>
</div>
</div>
</li>
<?php /*end loop*/ ?>
答案 0 :(得分:0)
要回答您的直接问题,请考虑以下伪代码:
检查是否存在包含xml内容的本地文件。像/home/db/tempfiles/feed_name_current_date.xml
如果使用步骤1中的构造找不到匹配的本地本地文件,那么就像现在一样加载xml
从URL加载xml后,使用带有 feed_name 和 current_date 的命名空间构造保存内容,因此当发出新请求时,步骤1将返回本地文件
我很好奇,如果它是xml Feed,您是否不想将数据存储在本地系统中?你如何跟踪购买等?