Самый быстрый способ вывода статического HTML в PHP - PullRequest
1 голос
/ 17 февраля 2011

Поскольку я начал больше использовать PHP, я заметил два метода вывода статического HTML-контента. Мне любопытно, какой метод быстрее / эффективнее. По сути, один использует PHP, а другой нет. Я предполагаю, что это может зависеть от того, будет ли это увеличивать нагрузку на сервер, чтобы постоянно входить и выходить из php.

В целом, является ли один из этих методов более эффективным?

Метод 1:

<?php
$muniResult = mysql_query("SELECT muni.full, muni.pk FROM muni ORDER BY muni.full ASC");
$munis = mysql_num_rows($muniResult);
?><select><?php
while ($munis > 0) {
    $thisEntry = mysql_fetch_array($muniResult);
    ?><option value="<?php echo $thisEntry['pk']; ?>"><?php echo $thisEntry['full']; ?></option><?php
    $munis--;}
}
?>
</select>

Метод 2:

<?php
$muniResult = mysql_query("SELECT muni.full, muni.pk FROM muni ORDER BY muni.full ASC");
$munis = mysql_num_rows($muniResult);
echo "<select>";
while ($munis > 0) {
    $thisEntry = mysql_fetch_array($muniResult);
    ?>
    echo "<option value=\"".$thisEntry['pk']."\">".$thisEntry['full']."</option>";
    $munis--;
}
echo "</select>";
?>

Ответы [ 3 ]

3 голосов
/ 17 февраля 2011

Если вы сравните их , вы увидите, что использование echo (Метод # 2) на самом деле медленнее, чем вывод HTML вне интерпретируемого кода. Производительность по-прежнему незначительна.

Тем не менее, я за последнее (т.е. не использую эхо). Это вопрос ремонтопригодности.

Скажем, у вас есть это:

<?php
echo '<select>';
foreach ($options as $option) {
    echo "<option>$option</option>";
}
echo '</select>';
?>

По сравнению с этим:

<select>
<?php foreach ($options as $option): ?>
   <option><?php echo $option; ?></option>
<?php endforeach; ?>
</select>

Я считаю, что последнее более читабельно и легче поддерживать первое. Некоторые не согласятся, так как это скорее вопрос личных предпочтений. Однако я нашел больше людей, которые согласны со мной, чем тех, кто не согласен.

Примечание: Ваш код не анализируется. ;)

0 голосов
/ 17 февраля 2011

Я никогда не проводил тестирование по этому вопросу, но лично я считаю, что разница незначительна.

Что лучше, чем оба этих метода, тем не менее сначала выполняется вся ваша обработка, а затем распечатывается результат в HTML. Обычный метод - использовать шаблонизатор, например Smarty . Причина этого в том, что вы почти всегда должны разделять свои интересы при программировании приложений, особенно веб-приложений. Вы должны убедиться, что обработка данных отделена от логики приложения, а также от дизайна приложения. Это называется Model View Controller (MVC) и является отличным способом сохранить ваше приложение организованным и обслуживаемым. Если это слишком сложно для вас, то вы должны хотя бы попробовать Smarty. Он очень прост в использовании и сэкономит вам много времени и усилий.

Редактировать: Кроме того, вы никогда не должны печатать предоставленные пользователем данные в html без предварительного их экранирования. Это необходимо для предотвращения межсайтового скриптинга (XSS) , который является распространенной, но очень серьезной уязвимостью на веб-страницах. Вместо этого:

<?php echo $thisEntry['pk']; ?>

Вы должны использовать функцию htmlspecialchars:

<?php echo htmlspecialchars($thisEntry['pk'], ENT_QUOTES, 'UTF-8'); ?>

Вы должны заменить «UTF-8» правильной кодировкой ваших данных. По этой причине вам также следует явно указать кодировку: http://shiflett.org/blog/2007/may/character-encoding-and-xss

0 голосов
/ 17 февраля 2011

Оба эти метода используют PHP, и ни один из них не будет значительно быстрее другого, весь текст анализируется препроцессором перед отправкой в ​​HTTP.

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