なぜPHPはキャッシュ用の.PHPと.ABC拡張機能を識別するのですか?
-
12-10-2019 - |
質問
PHPエンジンがファイル拡張子のみが異なる同一ファイルをどのように処理するかの間に問題があるようです。
問題: 「if修正された条件付きリクエストは、完全なコンテンツを変更して返しました。」
また、ファイルの内容が同一であるにもかかわらず、.xxx拡張機能の識別ツインよりもはるかに高速であると測定しました。
「HTTPを使用すると、クライアントは条件付きリクエストを行い、保持しているコピーがまだ有効かどうかを確認できます。この応答にはラスト変更されたヘッダーがあるため、クライアントは検証のためにif修正-sinceのリクエストヘッダーを使用できるはずです。これは、リソースが変更されていなくても完全な応答を送信することを発見しました。
で終わるホームページ .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はキャッシュされるべきである間に完全なリクエストが返されます。つまり、ページ全体が遅いことを意味します。
結論:変更されていないコンテンツを返す条件付きリクエストを排除するために、何を変更する必要がありますか?
解決
サーバーは.phpではないため、拡張機能をデコードする方法を決定するのに苦労しているようです。 HTTPACESSでPHPとして認識されるように拡張機能を定義したとしても、サーバーがページを処理するためにいくつかの追加の手順が必要です。つまり、.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";
}
?>