【问题标题】:parts of HTML static, others dynamic - PHP or HTML - best way to lookup database部分 HTML 静态,其他部分动态 - PHP 或 HTML - 查找数据库的最佳方式
【发布时间】:2010-09-13 22:49:15
【问题描述】:

我正在为产品创建一个网站。我想知道:使用 PHP 使用单个动态页面会更好,还是为每个产品生成一个 HTML 页面,在 cron 作业中从 php 模板文件更新页面?页面上的大部分材料(例如基本产品信息)不会随时间变化,但页面的其他部分将通过数据库查找(库存、评论等)生成

我听到一些人争辩说,出于 SEO 目的,最好使用静态网址(例如 category/product1.html)而不是动态网址(例如 products.php?id=1234)。我发现前一种方法的问题是从 HTML 页面进行数据库查找似乎不方便。我实现它的方式是使用 javascript->php:

<script type="text/javascript" src="http://localhost/inv_lookup.php?UPC=<?php echo $UPC; ?>"></script>

但是在 PHP 文件中,你必须打印 javascript 格式的文本:

    echo "document.write(\"" . $field . " : <b>" . $row[$i] . "</b> <br/> \")"; 

这种数据库查找对我来说似乎很草率。有什么建议吗?

【问题讨论】:

  • 请原谅我的提问,但我不太确定您要提出什么建议。关于如何处理静态页面的建议?网址?数据库查找?我认为您正在寻求有关如何处理产品页面 url 的建议,所以我认为您可以通过编辑 htaccess 而不是使用 jscript 来使用漂亮的 url 来做到这一点

标签: php mysql html dynamic


【解决方案1】:

没有理由不能将其作为单个 .php 文件进行。使用适当的 mod_rewrite 规则,您可以在内部动态地将 example.com/products/1234 重新映射到 example.com/product.php?id=1234 URL。

如果您真的讨厌暴露 PHP,您可以随时配置 Web 服务器以将 .html 文件视为 PHP 脚本 (AddHandler php5-script .html)。

至于打印“javascript-formatted text”,使用JSON为你做“格式化”更容易:

<?php
    $product = array('name' => 'Deluxe Widget', 'id' => 1234);
?>
<script type="text/javascript">
    var product = <?php echo json_encode($product) ?>;
    document.write(product.name + ': <b>' + product.id + '</b><br />');
</script>

【讨论】:

    【解决方案2】:

    1) 不要使用 cron 和 php 更新静态 html 页面。这简直是​​疯话。

    2) 如果您想要更清晰的变量插值,请使用 heredoc 语法:

    echo <<<EOF
      this is a {$row['0']} and a "$varable" for  you. oh yeah don't forget the '
    EOF;
    

    【讨论】:

    • 嗯,创建或多或少的静态页面/部分对于非常大的网站来说是必须的(那些甚至在大洲/国家拥有独立数据中心的网站,例如一个包含数十万种产品的产品目录)一家大型电子公司),用 cron 来做这件事确实很傻。更新应该只推送到服务器。
    【解决方案3】:

    建议:

    1. 确实,以纯 HTML 格式存储和提供页面非常节省资源。
    2. 理想情况下,URL 中不应有任何部分显示任何语言或实现(无 .asp、无 .php、无 .cgi、无 .html)。这样,您可以随意切换,并且您的 URL 的每一部分都指向您正在查看的资源。查看 apache 的 mod_rewrite 等。
    3. 正如您所注意到的,某些部分比其他部分更不稳定,因此建议单独存储内容“部分”(主导航、产品描述、评论)等。
    4. Cron 作业很可能不会削减它。当有人在后端更改价格时,前端应尽快显示。创建挂钩以使更改无效/重新创建内容将使您的生活更轻松。
    5. 很可能您仍然希望前端有一些准系统 php 脚本,它连接的是您的单独缓存,并且可能能够在缓存不可用时动态创建一个 html 部分。

    作为最后的建议:我会看看哪些主要框架、CMS 和电子商务解决方案实现为缓存,您可能会犯很多错误,而且大多数已经解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2013-04-29
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      • 1970-01-01
      相关资源
      最近更新 更多