【问题标题】:Auto refresh XML RSS file using http-equiv="refresh"使用 http-equiv="refresh" 自动刷新 XML RSS 文件
【发布时间】:2013-10-21 12:52:52
【问题描述】:

我使用 PHP 为 RSS 提要创建了一个 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 代码中?

【问题讨论】:

  • 为什么? RSS 旨在供提要阅读软件使用,该软件将按计划自动轮询它。
  • 您的问题与哪个 RSS 规范有关? RSS 2.0?如果是这样,您能否指出这样的“刷新代码” 是该规范的一部分?我很难找到它...
  • @hakre — 如果 OP 能找到这样的东西,那么他们就会回答自己的问题。
  • @Quentin 每个 120 只需要抓取 5 个帖子,我需要刷新以使用新的 5 个帖子或旧的 5 个帖子更新我的 Facebook 页面,这取决于我的代码
  • @hakre 我的 Rss 是 2.0 &lt;rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"&gt;,我的 Rss 没有刷新,但我想将 http-equiv="refresh" 添加到它或其标题中,以便它可以每 120 秒自动刷新一次

标签: php xml rss refresh


【解决方案1】:

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

好吧,我对此表示怀疑,部分原因是这里没有页面。页面(以及后来使用的术语“刷新代码”)意味着涉及 HTML(“HTML 页面”),但不涉及 HTML。根据您设置的内容类型 XML - 而不是 HTML - 涉及:

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

由于涉及 XML 而不是 HTML,因此不涉及 HTML,因此没有这样的 HTML 刷新(属性值 http-equiv 可能会误导您认为 refresh标头可能是 HTTP,但它实际上不是协议的一部分,因此您可能被该结构误导了,请参阅 Meta Refresh)。

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

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

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

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

由于 RSS 是基于 XML 的,因此是模块化的,因此您可以建议和扩展这样做,然后告诉软件供应商哪些软件可以与您的 XML 提要一起使用。这也许是最简单的。

【讨论】:

    【解决方案2】:

    我找到了一种简单的免费刷新方式,它是一个 Google chrome 应用程序——即使我通常使用 Firefox——但我认为我可以使用 chrome 来完成这项任务

    Easy Auto Refresh

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

    【讨论】:

      【解决方案3】:

      如果您真的想刷新显示在浏览器窗口中的 RSS 提要,只需发送与 http-equiv&lt;meta&gt;element 内容相同的 HTTPheader(这就是所有这些元素确实:传达一些通常会使用HTTP 标头发送的数据),例如:

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

      请注意,此不标准符合,因为它是由 Netscape 引入的附加内容,并且从未被标准化。但它应该适用于大多数浏览器。

      如果这不是您想要的,并且您只想告诉客户何时重新访问提要以进行更新,请使用&lt;ttl&gt;,如下所示:

      <?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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-06
        • 1970-01-01
        • 2011-03-24
        相关资源
        最近更新 更多