Что быстрее - массив против базы данных - PullRequest
2 голосов
/ 29 июня 2011

Я добавляю метатеги, заголовки, таблицы стилей и скрипты на каждую страницу через PHP - но все отдельно от страницы к странице (так как у меня есть header.php, который является универсальным), я все еще нахожусь на заборе, хотя из того, что быстреедля 20+ страниц.Я мог бы легко сохранить все свои значения и тому подобное в многомерном массиве и вернуть весь массив, а затем распределить каждое значение соответствующим образом или я могу запросить базу данных, но на самом деле, что даст мне самый быстрый результат?Неужели это будет намного медленнее, чем когда-либо?Будет ли пользователь даже заметить?На все вопросы у меня нет ответов, что вы, ребята, думаете?

Ответы [ 2 ]

5 голосов
/ 29 июня 2011

Я бы не включил базу данных в пару десятков страниц - если только у вас нет кучки контента, который вам нужно там хранить.Вместо этого я бы собрал массив на каждой странице, а затем включил шаблон:

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

Это можетподходить для большей части того, что вы делаете, но когда дела начинают становиться все тяжелее - определенно добавьте более долговременный запас в решение для базы данных.

1 голос
/ 29 июня 2011

Ни один из них не так быстр, как при использовании файловой системы -

1) разделив контент на именованные файлы, идентифицируемые клиентом, вы можете воспользоваться механизмами кэширования HTTP

2), не требуяНа запрос, который будет направлен через логику вашего приложения (или логику приложения + базу данных), операция ввода-вывода будет иметь меньшие издержки и, следовательно, будет быстрее.

(обратите внимание, что в ответе Джонатана Сэмпсона используется гибридный подход хранения данных вфайловая система, но с возможностью выборочного представления различных групп браузеру).

В других случаях вам приходится манипулировать произвольными структурами данных в вашем приложении, когда хранилище файловой системы не подходит и где вы можете подуматьпроизводительность массивов против баз данных.IME, PHP массивы не всегда быстрее, чем БД - и с увеличением размера пула данных база данных становится значительно более эффективной (фактически база данных имеет большую пропускную способность в сочетании с большей задержкой).Единственное, что точно известно, что быстрее / более масштабируемо, - это измерить его, но если ваш набор данных меньше, скажем, 100 элементов, то массив, вероятно, будет быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...