【问题标题】:What is Faster - Array vs. Database什么是更快 - 阵列与数据库
【发布时间】:2011-09-24 20:04:32
【问题描述】:

我正在通过 PHP 向每个页面添加元标记、标题、样式表和脚本 - 但所有页面之间都是分开的(因为我有一个通用的 header.php)我仍然在围栏上,尽管更快超过 20 页。我可以轻松地将我的所有值等存储在一个多维数组中并返回整个数组,然后相应地分配每个值,或者我可以查询一个数据库,但实际上哪个会给我最快的结果?它真的会慢很多吗?用户甚至会注意到吗?所有问题我都没有答案,你们怎么看?

【问题讨论】:

  • 选择最容易维护和使用的那个。在您获得大量点击之前,我怀疑这两种选择都会影响您的网站。请记住,过早的优化是万恶之源。
  • @GWW 我更愿意认为这只是 97% 的邪恶 ;-)
  • 数组,总是。如果您使用数据库,则必须等待它为您将内容加载到内存中。只有当您拥有大量数据(超过 100 MB 左右)时才真正需要数据库,否则您的内存会变得太满。

标签: php mysql database arrays performance


【解决方案1】:

我不会在几十页的混合中使用数据库 - 除非您有大量需要存储在其中的内容。相反,我要做的是在每个页面上构建数组,然后包含模板:

<?php
  $page = array(
    'title'   => 'Index Page',
    'styles'  => array( 'reset.css', 'text.css', '960.css' ),
    'scripts' => array( 'jquery.js' )
  );

  include('header.php');
?>

  <p>Page content here<?p>

<?php
  include('footer.php');
?>

在您的 header.php 文件中,包含以下内容:

<title><?php echo isset($page['title']) ? $page['title'] : 'Default' ; ?></title>
<?php foreach ( $page['styles'] as $style ) : ?>
<link rel='stylesheet' href='<?php echo $style; ?>' />
<?php endforeach; ?>

这可能适用于您正在做的大部分事情,但是当事情开始变得更重时 - 一定要在数据库解决方案中放置更多的长期库存。

【讨论】:

  • 嗯,这是一个很好的解决方案,而不是使用多维数组。谢谢!
【解决方案2】:

两者都几乎没有使用文件系统的速度 -

1) 通过将内容分成客户端可识别的命名文件,您可以利用 HTTP 的缓存机制

2) 通过不要求通过您的应用程序逻辑(或应用程序逻辑 + 数据库)路由请求,I/O 操作的开销将更少,因此速度更快。

(请注意 Jonathan Sampson 的回答使用混合方法将数据存储在文件系统中,但可以选择向浏览器选择性地呈现不同的组)。

在其他时候,您必须在应用程序中操作任意数据结构,此时文件系统存储不合适,您可能需要考虑数组与数据库的性能。 IME、PHP 数组并不总是比 DB 快——而且随着数据池大小的增加,数据库变得更加高效(实际上,数据库具有更大的带宽和更大的延迟)。唯一确定哪个更快/更具可扩展性的唯一方法是测量它 - 但如果您的数据集少于 100 个项目,那么数组可能会更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2013-06-17
    • 2019-03-25
    • 1970-01-01
    相关资源
    最近更新 更多