9

ファイル拡張子のみが異なる同一のファイルを PHP エンジンが処理する方法には問題があるようです。

問題: 「If-Modified-Since 条件付きリクエストが完全なコンテンツを変更せずに返しました。」

また、ファイルの内容が同一であり、ファイル拡張子のみが異なる場合でも、.php 拡張子は .xxx 拡張子を持つ同一のツインよりもはるかに高速に読み込まれることが測定されました。

代替テキスト

代替テキスト

「HTTP により、クライアントは保持しているコピーがまだ有効かどうかを確認するための条件付き要求を行うことができます。この応答には Last-Modified ヘッダーがあるため、クライアントは検証のために If-Modified-Since 要求ヘッダーを使用できるはずです。RED は完了しました。これにより、リソースが変更されていないにもかかわらず、リソースが完全な応答を送信することがわかりました。これは、Last-Modified 検証をサポートしていないことを示しています。」


で終わるホームページ.php

代替テキスト


まったく同じファイルですが、終了します.ast

代替テキスト


与えられた:

home.php ファイルは、home.xxx としてコピーされ、この拡張子が htaccess に追加され、PHP ファイルとして認識されます。.php ファイルは、鮮度が 3 時間に設定されている php.ini をリッスンし、非 .php ファイルは、鮮度が 2 時間に設定されている htaccess をリッスンする必要があります。

AddType application/x-httpd-php .php .ast .abc .xxx .etc

<IfModule mod_headers.c>
    ExpiresActive On
    ExpiresDefault M2419200
    Header unset ETag
    FileETag None
    Header unset Pragma
    Header set Cache-Control "max-age=2419200"

    ##### DYNAMIC PAGES
    <FilesMatch "\\.(ast|php|abc|xxx)$">
        ExpiresDefault M7200
        Header set Cache-Control "public, max-age=7200"
    </FilesMatch>
</IfModule>

より具体的には、php 以外のファイルが適切にキャッシュされないか、適切にキャッシュされるが適切に検証されないことを除いて、これまでのところうまくいき、すべてが読み込まれます。同封の画像を参照してください。PHP 以外のファイル拡張子のみがエラーを引き起こし、読み込みが遅くなります。

page.php 全体は、そこにあるすべての要素がキャッシュから適切に読み込まれるため、高速に読み込まれますが、page.abc はキャッシュされるべきであるにもかかわらず完全なリクエストが返されるため、ページ全体が遅くなります。

結論: コンテンツ全体を変更せずに返す If-Modified-Since 条件付きリクエストをなくすには、何を変更する必要がありますか?

4

1 に答える 1

2

.php ではないため、サーバーが拡張子をデコードする方法を判断するのに問題があるようです。httpacess で拡張子が php として認識されるように定義した場合でも、サーバーがページを処理するには追加の手順が必要です。 、おそらくサーバーの問題により、これにさらに時間がかかります)。ページで .php 拡張子を使用しないのはなぜですか? なぜ .abc が必要なのですか? マスクするのではなく、デフォルトの拡張子をそのまま使用することをお勧めします。

編集: この関数を各ページの上部に配置すると、ユーザーが使用しているドメイン名を検出し、www とドメイン拡張子を取り除き、その特定のドメイン名のコンテンツのみを表示します。すべてのドメイン名に同じ .php ファイルを使用でき、複雑な拡張を行う必要はありません。

<?php
$domain = explode(".", $_SERVER['SERVER_NAME']);
if ($domain[2]) {
    $domainName = $domain[1];
}
else {
    $domainName = $domain[0];
}

if ($domainName = "YourDomainNameWithNoExtension") {
    echo "Welcome to $domainName";
}
?>
于 2010-12-21T20:40:44.137 に答える