Будет RewriteRules В.htaccess влияет на скорость работы сайта?



Я планирую добавить не более 10 .htaccess переписывает url-коды в домашнем каталоге повлияет ли это на выполнение (время загрузки сайта) моего сайта ?



Мой ток .файл htaccess-это



Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([0-9]+)/([0-9]+)/([^.]+).html index.php?perma=$3
RewriteRule ^movies/([^.]+).html gallery.php?movie=$1
RewriteRule ^album/([^.]+).html gallery.php?album=$1
RewriteRule ^img/([^.]+)/([^.]+).html gallery.php?img=$2
RewriteRule ^movies.html gallery.php
733   4  

4 ответов:

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

Вам, возможно, потребуется увидеть влияние на производительность порядка правил перезаписи при использовании apache mod_rewrite и, как прокомментировал @diolemo, для 20 правил перезаписи это не заметно.

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

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

Http://tools.pingdom.com/fpt/

HTH.

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

.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L,QSA]

Индекс.php

$query = $_SERVER['REQUEST_URI'];
$queryParts = explode('/', $query);
switch($queryParts[0]) {
    case 'movies':
        // ...
        break;
    case 'album':
        // ...
        break;
    case 'img':
        // ...
        break;
    // ...
    default:
        // 404 not found
}

Условия RewriteCond гарантируют, что запросы к существующим файлам не будут перезаписаны. QSA необязателен, он означает "строка запроса добавлена", так что, например, movies.html?sort=title переписывается в index.php?sort=title. Исходный запрос URI является доступно в $_SERVER['REQUEST_URI'].

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

Если нет, микро-фреймворк, такой как Silex, может сделать эту работу за вас. В Silex ваш маршрут может выглядеть следующим образом:

Индекс.php

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();

$app->get('/{year}/{month}/{slug}', function ($year, $month, $slug) use ($app) {
    return include 'article.php';
});
$app->get('/movies/{movie}.html', function ($movie) use ($app) {
    return include 'gallery.php';
});
$app->get('/album/{album}.html', function ($album) use ($app) {
    return include 'gallery.php';
});
$app->get('/img/{parent}/{img}.html', function ($parent, $img) use ($app) {
    return include 'gallery.php';
});
$app->get('/movies.html', function () use ($app) {
    return include 'gallery.php';
});

$app->run();

gallery.php и article.php должен был бы вернуть их выход. Вы, наверное, можно повторно использовать существующие скрипты с этим индексом.php если вы замените $_GET['var'] на $var и добавите буферизацию вывода:

Галерея.php

ob_start();
// ...
return ob_get_clean();

Comments

    Ничего не найдено.