0

購入したスクリプトに関する問題のトラブルシューティングを行ってい.htaccessますが、それが原因でかなりの争いが発生しています。書き換えを有効にして Blitz.io を使用して 1 ~ 250 のテストを行った場合、すべてのリクエストでタイムアウトになる前に約 5 人のユーザーに到達します。このイベントが発生したときにサーバー リソースの競合は見られませんが、最大接続数を使用したという Apache からのイベントがときどき見られます。数千の接続を処理するように設定したため、これは正しくありません。

書き換え理論をさらに裏付けると、書き換えを無効にして同じphpページに対してブリッツを実行すると、エラーやタイムアウトなしでテストが完了します(スクリプトのほとんどが壊れます:))。また、リライトをオフにした Blitz での応答時間は最大で約 250 ミリ秒ですが、リライト エンジンを有効にすると、1 秒を超えて急上昇することにも気付きました。

どんな提案でも大歓迎です。私はかなり検索しましたが、あまり思いつきませんでした。私はn00bを書き直しています。

よろしくお願いします。今から頭を冷やします...

    # enable apache morRewrite module #
    RewriteEngine on

    RewriteBase /

    # set files headers
    <IfModule mod_headers.c>
    <FilesMatch "\.(css|js|png|gif|jpg|jpeg|htc)$">
    Header set Cache-Control "max-age=2678400, public, must-revalidate"
    </FilesMatch>
    </IfModule>

    # allow request methods
    <Limit POST PUT DELETE GET OPTIONS HEAD>
       Order deny,allow
       Allow from All
    </Limit>

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f

    ErrorDocument 404 /404.html

    # non last slash redirect
    RewriteCond %{REQUEST_URI} !(\.php|\.html|\.xml|\.txt|[\/])$ [NC]
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [NC,L,R=301]

     # define system languages
    #RewriteRule ^([a-zA-Z]{2})$ index.php?page=$1 [QSA,L]

    # define paging
    RewriteRule ^([^//]+)/?(.*)?/index([0-9]*).ht(m?ml?)$ index.php?           page=$1&rlVareables=$2&pg=$3 [QSA,L]

    # define listing
    RewriteRule ^(([\w\-\_]+)?/)(.+)-l?([0-9]+).ht(m|ml)$ index.php? page=$2&rlVareables=$3&listing_id=$4 [QSA,L]

    # wildcard request
    RewriteCond %{HTTP_HOST} ^((?!www\.|m\.|mobile\.).*)\..+\.[^/]+$ [NC]
    #RewriteCond %{HTTP_HOST} ^((?!www\.|m\.|mobile\.).*)\..+$ [NC] # FIRST LEVEL         DOMAIN (localhost) USAGE
    RewriteRule (.*) index.php?page=%1&wildcard&rlVareables=$1 [QSA,L]

    # account request (sub-directory)
    RewriteRule ^((\w{2})/)?([\w-_]{3,})$ index.php?page=$3&lang=$2&account_request [QSA,L]

    # define single pages
    RewriteRule ^([^//]+)/?(^/*)?.ht(m?ml?)$ index.php?page=$1 [QSA,L]

    # define other pages
    RewriteRule ^([^//]+)/?(.*)?/?(.*)?(.ht(m?ml?)|/+)$ index.php?page=$1&rlVareables=$2 [QSA,L]
4

1 に答える 1

0

アクセス ログと rewrite.logs を確認しましたか (後者を一時的に有効にできる場合)。

飛び出すことの 1 つは、家具のヘッダー ディレクティブ (css、jpeg など) と、具体的には再検証が必要なフラグです。これにより、クライアント ブラウザはすべての画像などに対して条件付き GET を発行するようになります。これはデフォルトの動作ではありません。ブラウザは、静的ファイルの経過時間の 10% がキャッシュ可能であると想定します (つまり、10 週間前のファイルの場合、ブラウザは週に 1 回だけファイルを再検証します)。OK、これらの GET のほとんどは 304 "not modified" 応答になりますが、これは依然として Apache がこれらの要求を検証する必要があることを意味し、これによりサーバーへの全体的な要求率が 5 倍から 10 倍に簡単に増加する可能性があります。

「最後のスラッシュ以外のリダイレクト」は、php、html、xml、および jpeg などを含む txt ファイル以外のすべての URI に対して発生します。2 つの REQUEST_FILENAME 条件は、REQUEST_URI 条件の直前にある必要があります。つまり、ErrorDocument ディレクティブを 4 行上に移動する必要があります。

また、テスト ベクトルを使用して、単一およびその他のページの正規表現をチェックアウトする必要があります。それらは有効な構文ですが、私が望むものは得られません (たとえば、 ;[^//]と同じ[^/]です ;と同じです; ^/* はおそらく読み取る必要があるため、このルールは現在、null 文字列に一致する場合にのみ一致.ht(m?ml?)し、したがって.shtmml[^/]*^([^//]+)/?(^/*)?.ht(m?ml?)$

私があなただったら、お金を返してもらいます:-(

于 2012-12-22T17:43:03.103 に答える