使用http-equiv =“refresh”自动刷新XML RSS文件

时间:2013-10-21 12:52:52

标签: php xml rss refresh

我使用PHP为RSS feed创建了一个XML文件,其标题如下:

header("Content-Type: application/rss+xml; charset=UTF-8");
echo '<?xml version="1.0" encoding="utf-8" ?>';

我需要每120秒刷新一次页面

我可以使用以下命令自动刷新任何HTML或PHP页面:

<meta http-equiv="refresh" content="120" />

如何将以前的刷新代码添加到我的XML RSS代码中?

3 个答案:

答案 0 :(得分:0)

  

我需要每120秒刷新一次页面

嗯,我有点怀疑,因为这里没有页面。页面(以及后面使用的术语“刷新代码”)意味着涉及HTML(“HTML页面”),但不涉及HTML。根据您设置的Content-Type,XML - 而不是HTML - 涉及:

header("Content-Type: application/rss+xml; charset=UTF-8");
echo '<?xml version="1.0" encoding="utf-8" ?>';

由于涉及XML而不涉及HTML,因此不涉及HTML,并且没有此类HTML刷新(atrribute值 http-equiv 可能会误导您刷新 header将是HTTP但它实际上不是协议的一部分,因此您可能误导了该构造,请参阅Meta Refresh)。

所以你可能需要这样做,但从技术上说,这是不可能的。或者反过来说:只有你需要一些东西,但这并不意味着你已经很好地满足了你需要的东西。

  

如何将以前的刷新代码添加到我的XML RSS代码中?

您可以逐字添加 - 例如在XML注释中添加 - 但是我想您可以询问如何添加与Web浏览器和具有该代码的HTML页面相当的功能。

好问题。由于这是您从服务器提供的XML Feed,因此只需要它。您可以通过HTTP响应标头发送一些缓存和重新访问信息(Caching in HTTP - RFC 2616广泛覆盖该主题)但除此之外,我不知道任何其他侧通道传递某种刷新信息RSS

由于RSS是基于XML的,因此模块化,您可以建议和扩展,然后告诉供应商,这些软件被认为与您的XML源一起使用。这可能是最容易的。

答案 1 :(得分:0)

我找到了一种轻松自由的方式为我做刷新,它是一个谷歌浏览器应用程序 - 即使我通常使用Firefox - 但我认为我可以使用chrome来执行该任务

Easy Auto Refresh

它可以在任意秒数后自动刷新和自动重新加载页面。

答案 2 :(得分:0)

如果您确实想刷新显示在浏览器窗口中的RSS提要,只需发送一个HTTP标头,其内容与http-equiv <meta>相同元素(此元素的全部作用:传达通常使用HTTP标头发送的一些数据),例如:

header("Content-Type: application/rss+xml; charset=UTF-8");
header("refresh: 120");
echo '<?xml version="1.0" encoding="utf-8" ?>';

请注意,此 not 标准符合标准,因为它是Netscape引入的附加标准,并且从未进行过标准化。但是它应该在大多数浏览器中都可以使用。

如果不是您想要的,而您只是想告诉客户何时重新访问供稿以进行更新,请使用<ttl>,如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0"><channel>
  <title>RSS Title</title>
  <!-- other meta data here ... -->
  <!-- time the information in this file stays valid (when to refresh) in minutes: -->
  <ttl>2</ttl>
  <!-- rss items, here ... -->
</channel></rss>

详细信息:https://cyber.harvard.edu/rss/rss.html#ltttlgtSubelementOfLtchannelgt