5

ホーム ディレクトリに最大 10 個の .htaccess 書き換え URL コードを追加する予定ですが、Web サイトの実行 (サイトの読み込み時間) に影響しますか?

私の現在の.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
4

4 に答える 4

2

apache mod_rewriteを使用する場合、書き換えルールの順序によるパフォーマンスへの影響を確認する必要がある場合があります。@ diolemoがコメントしたように、20の書き換えルールでは目立ちません。

于 2013-02-08T07:09:54.703 に答える
2

10 個のルールは問題ではありませんが、今後の参考のために: 通常のアプローチでは、すべてを 1 つのエントリ ポイントにリダイレクトし、アプリケーションにルーティングを任せます。簡単な例:

.htaccess

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

index.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 では、ルーティングは次のようになります。

index.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.phparticle.php出力を返す必要があります。出力バッファリングを置き換え$_GET['var']て追加すると、おそらくこの index.php で既存のスクリプトを再利用できます。$var

gallery.php

ob_start();
// ...
return ob_get_clean();
于 2013-02-08T08:31:08.103 に答える
2

はい、ロード時間に影響します。ルール/例外が多いほど、レンダリングに時間がかかります。しかし、私たちは人間の目でさえ気付かないマイクロ/ミリ秒について話している.

于 2013-02-08T07:58:38.790 に答える
1

Web ページをダウンロードするのに必要な時間のほとんどは、HTML、CSS、JavaScript、および画像を取得するためのものです。URL を書き換える時間はごくわずかです。

通常、読み込み時間が遅くなる最大の原因は画像です。Pingdom のようなツールを使用すると、さまざまなコンポーネントの読み込み時間を概観することができます。

http://tools.pingdom.com/fpt/

HTH。

于 2013-02-08T07:50:39.703 に答える