【问题标题】:PHP HttpRequest to create a web page - how to handle long response times?PHP HttpRequest 创建网页 - 如何处理长响应时间?
【发布时间】:2014-05-26 00:28:00
【问题描述】:

我目前在静态 html 页面上使用 javascript 和 XMLHttpRequest 在 Zotero 中创建记录视图。这很好用,除了一件事:页面 html 标题。

我当然也可以更改<title>...</title> 标签,但如果有人想将视图发布到例如facebook,网页上的静态标题将显示在那里。

我想不出任何方法来仅使用带有 javascript 的静态页面来解决此问题。我相信我需要一个从服务器动态创建的页面,该页面执行类似于 XMLHttpRequest 的操作。

对于 PHP,有 HTTPRequest。现在来解决问题。在 javascript 版本中,我可以使用异步调用。使用 PHP,我认为我需要同步调用。这有什么好担心的吗?

是否有其他我不知道的方法来处理这个问题?

更新:看起来那些试图回答的人根本不熟悉 Zotero。我应该更清楚。 Zotero 是位于http://zotero.org/ 的参考数据库。它有一个可以通过 XMLHttpRequest 使用的 API(就是我上面说的)。

现在我不能在我上面描述的场景中使用它。所以我想从我的服务器调用 Zotero 服务器。 (通过 PHP 或其他方式。)

(如果您不熟悉这些概念,可能很难理解和回答这个问题。当然。)

更新 2:对于那些对 Facebook 如何删除您在此处发布的 URL 感兴趣的人,请在此处进行测试:https://developers.facebook.com/tools/debug

正如您通过测试看到的那样,没有运行任何 javascript。

【问题讨论】:

  • 标题与问题不符。
  • 谢谢@Popnoodles,但你是什么意思?我的意思是,使用 javascript 版本我不必担心来自 Zotero 服务器的长时间响应,因为 javascript 中的调用是异步的。我不知道在 PHP 案例中如何处理较长的响应时间。
  • “这有什么好担心的吗?” 不。 API(服务器)只看到一个传入的 HTTP 请求,它不知道也不关心客户端是如何执行这个请求的。
  • 嗯,当然是阻塞的。你觉得可能会出现什么问题?不如试试看有没有问题?
  • @FelixKling 嗯,是的,它正在阻塞 ;-) -- 我当时认为我的服务器上可能存在一些性能问题。但我想我只是有点太偏执了。我会测试。 (也许我可以使用重定向来代替 - 如果 fb URL 报废处理。)

标签: javascript php xmlhttprequest httprequest


【解决方案1】:

抱歉,我不确定我是否理解您要问的问题,您只是想更改页面标题吗?

为什么不使用 javascript?

document.title = newTitle

【讨论】:

  • +1 用于回答看似实际的问题,并完全忽略似乎与其他问题有关的标题。
  • 我不确定我到底想为他回答什么?他的标题和文字完全不一样O_o
  • 感谢新西兰米奇。是的,我可以做到——我在问题中这么说。问题是当有人将页面发布到例如 facebook 时,javascript 没有运行。 (标题应反映从 Zotero 服务器获取的记录。)
  • 对不起,你的问题很混乱。基本上你想要一个动态创建的页面在 facebook 上发布,它会有动态创建的页面标题?
  • 是的。但标题是从另一台服务器(Zotero 服务器)获取的。
【解决方案2】:

Facebook 期望在获取页面时显示标题(或 opengraph :title 标签)。它不会执行任何 JavaScript 供您填写空白。

一个很酷的解决方法是使用 PHP 检测 Facebook 抓取工具,方法是解析用户代理字符串,并提供一个页面版本,其中包含已由 PHP 而不是 JavaScript 填充的信息。

据我所知,Facebook 抓取工具使用此标头作为用户代理:"facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"

您可以检查该字符串的一部分是否存在于标题中并相应地加载页面。

if (strpos($_SERVER['HTTP_USER_AGENT'], 'facebookexternalhit') !== false)
{
    //synchronously load the title and opengraph tags here.
}
else
{
    //load the page normally
}

【讨论】:

  • 啊,是的,这是一个很酷的主意。但我猜人们也会在 fb 以外的其他网站上发帖。是否有一些更通用的方法来检测 og-scrapper(或任何其他抓取工具)?
猜你喜欢
  • 1970-01-01
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多