0

我的网页网址是这样的

url = http://www.example.com/2223/this-is-the-url-text-of-page

在上面的 URL2223中是 id this-is-the-url-text-of-page,是存储在数据库中不同字段的静态文本。我根据 id 检索网页数据。

但是标题是必须在其他任何东西之前立即显示的东西。因此,如果我从数据库中检索标题,然后将其显示在页面顶部,我认为这不是一种有效的方法。显示页面标题的标准方式是什么。

大多数网站是否从数据库中检索标题?

或者

大多数网站是否在 URL 中附加标题?

或者

还有其他方式存在吗?

4

8 回答 8

2

大多数网站是否从数据库中检索标题?: 是的

大多数网站是否在 URL 中附加标题?: 页面的标题和 url 不是一回事。

标题:这是此页面的 URL 文本
url:this-is-the-url-text-of-page

有两种方法可以做到这一点。您可以将标题url 存储在数据库中,或者您可以从标题中以编程方式“构造”url。第一种解决方案更有效。

于 2013-04-21T09:47:10.827 回答
1

一般来说,根据我的经验,有几个因素需要考虑:

  1. 实际的页面标题可能包含在友好 url 中丢失的信息 - 例如。标点符号或多余的单词。你真的想要一个应该说“我无法访问互联网”的标题实际上是“我无法访问互联网”。
  2. 为了生成页面,我通常希望数据库也需要更多信息。也许是文章内容、关键字、标题图像等。因此无论如何数据库查询都会存在。
  3. 友好网址的主要目的是搜索引擎优化。由于您还传递了每个页面的 id,所以数据库会在 id 上查找。只要您的数据库表主键也在 id 上,这将有助于提高您的查找速度。

希望这有助于回答您的一些问题。

于 2013-04-21T09:43:15.003 回答
1

然后将其显示在页面顶部,我认为这不是一种有效的方式

这取决于。标题嵌入在 HTML 中,靠近顶部。虽然有稍后注入的方法,但在实践中通常不值得这样做。当启用输出缓冲时, PHP/HTTP 性能最佳- 并且内容一次性发送到浏览器 - 因此“有效”的解决方案是在完整内容可用之前不向浏览器发送任何内容。如果您的脚本非常慢(生成时间超过 4 秒),那么根据 DOM 的构造方式,浏览器可能会在 HTML 不完整时开始渲染 - 在这种情况下,强制分块编码可以改善感知性能 - 但这是复杂且难以实施的。

此外,响应中发送的第一个信息是请求的行为是否符合预期——用户是否经过身份验证?处理脚本有什么问题吗?内容验证是否正常,或者您是否需要将浏览器重定向回上一页?在身份验证转换中,您还需要在处理请求后删除 cookie(即修改标头)。在您有理由确定您知道答案将是什么之前,您不应该提供状态 - 检查数据库是否正常工作是其中的重要部分。如果您过早开始生成输出,那么您将在响应标头中返回不正确的数据并减少处理错误条件的选项。

因此,从性能和功能的角度来看,延迟生成输出直到您知道输出将是什么更有意义。

于 2013-04-21T09:58:05.263 回答
0

您的意思是在构建页面时获取标题->然后从数据库的单独字段中获取它。分别存储友好的 url 和标题。

此外,如果用户没有在 URL 中输入标题部分,只需使用 id 重定向到正确的页面。


不再相关:

我假设:您是否正在尝试动态构建一组链接,数据库中的页面(并且您可能随时有新页面或旧页面被删除),因此只需要获取标题?

为此 -> 您可以运行 20 分钟的 cron 作业并制作静态包含页面。写入新页面,完成后,删除主要包含“links.html”并将新页面重命名为此。

甚至可以在管理部分有一个链接随时运行

请提供更多上下文。没有标准的解决方案。或者更确切地说,根据情况有3-4个。

于 2013-04-21T09:37:33.207 回答
0

页面的标题在 html 标头中定义如下:

<title>php - What is the standard way to get the title of the page - Stack Overflow</title>

这可以是静态的,也可以是动态的,具体取决于页面以及设计者的构建方式。如果您尝试引用数据库,则不确定问题是什么,因为我们在那里看不到完整的组合。

你想达到什么目的?

于 2013-04-21T09:41:52.950 回答
0

推荐使用数据库检索标题与页面的其余部分。为什么?好吧,检查 id 不再是检查 var 中是否仅包含数字,但另一方面,字符串具有广泛的范围,它可以包含和不能包含的内容,这使得为它创建规则变得更加困难,这反过来打开安全问题。

换句话说,只需简单地向您的查询添加一个联接,您就可以开始了。

其次,如果您使用 mod_rewrite 创建这些 url,则常规 $_GET 变量仍然可用。

第三,如果不是,您可以使用某种功能,例如end(explode('/', $url));.

但最后正如我之前所说,数据库是推荐的,它比全局 var 方法更安全,并且比url 字符串方法上的“运行函数”更可靠。

于 2013-04-21T09:43:32.420 回答
0

从数据库中获取标题。URL 应该简短、中肯且易于输入。标题应该是描述性的。这意味着它可以更长,标点符号和更长的时间。

于 2013-04-21T09:47:12.433 回答
0

这个函数可能比爆炸更快,尤其是对于较长的 URL:

basename($url);
于 2013-04-21T09:51:16.340 回答