2011-11-08 15 views
0

http://www.hesa.ac.ukには、カスタムの404処理スクリプトを使用して、http://www.hesa.ac.uk/pressのユーザーを醜いCMSの1つである実際のURLにリダイレクトしています。http://www.hesa.ac.uk/index.php?option=com_content&task=category&sectionid=1&id=1&Itemid=161デフォルトのコンテンツはPHP 5.3.5/IIS7でヘッダーに追加されます

私たちは高速CGIを実行しています。

301ヘッダーが送信され、次にロケーションヘッダーが送信されます。

ユーザーの99%は問題なく動作しますが、一部のユーザーは5〜6秒のローディング時間を報告しています。

<head><title>Document Moved</title></head> 
<body><h1>Object Moved</h1>This document may be found <a HREF="http://www.hesa.ac.uk/index.php?option=com_content&amp;task=category&amp;sectionid=1&amp;id=1&amp;Itemid=161">here</a></body> 

これは、私たちが見ることができるコード内のどこにも出力されません。これは、リダイレクトに上げている浮遊コンテンツのビットに、私たちが考える、です。私は、コンテンツ出力されるのこの余分なビットを停止する方法を示しているすべてのリソースを見つけることができないよう

/** 
* Do the actual redirection to the win URL 
* 
*/ 
function doRedirection() { 


     //start output buffering to trap any content that is output by default by the headers 
     @ob_start(); 

     //permanently moved header 
     //header('HTTP/1.1 301 Moved Permanently'); 

     //fast-cgi, so use this:   
     header('Status: 301 Moved Permanently', true);    

     @ob_end_clean(); // clear output buffer 

     //location header 
     header("Location: ". $this->winUrl); 

     @ob_end_clean(); // clear output buffer 

     die(); 



} 

:ここでは、実際のリダイレクトを行う方法があります。私はリダイレクトを行うために、上記の方法に様々なバリエーションを試しました。

誰も同じような問題がありましたか?誰にもアイデアはありますか?

乾杯、

G

EDIT:私たちは、これはIIS7のために期待される動作であることを自覚しましたが、IIS6が同じコードでそれを行うために使用されることはありません、それが期待されますかどうか、私たちのユーザーは不平を言っており、これが問題であるようです。

EDIT 2:このアプローチを放棄して代わりにIIS7のURL書き換え機能に移行することは、PHPクラスの機能をクローンしてIISにプラグインするC#クラスを作成することになります。

EDIT 3:ただし、content-length:0ヘッダーを設定すると役立つ可能性があります。まだテストされていません。

答えて

0

実際には、リダイレクトコード内で組み込みのPHP関数getHostByAddr()を使用していたことがわかりました。 DNSレコードが正しく設定されていないクライアントホストは、getHostByAddr()から5〜6秒の遅延を経験します(IIS7ではIIS6ではこの問題が発生していません)。別の機能を見つけて交換すると、問題は解決しません。

関連する問題