PHP は、そのパワーとスケーラビリティにより、近年大きな進歩を遂げています。従来の ASP ウェブサイトと比較すると、PHP は速度の面で絶対的な優位性を持っています。60,000 個のデータを mssql に転送する場合、PHP は 40 秒かかります。 ASP には 2 分もかかりませんが、Web サイトのデータが増えるにつれて、そのデータを毎回データベースから削除する必要がなくなります。ファイルまたは特定のメモリアドレスとして。これは、PHP のキャッシュ技術、つまりキャッシュ技術です。
徹底した分析
一般的に、キャッシュの目的は、アクセスを高速化するためにデータを 1 か所に置くことです。メモリが最も高速であることは間違いありませんが、数百 M のデータをメモリに保存できるでしょうか? もちろん、これは非現実的な場合もあります。たとえば、ob_start() キャッシュ ページがオンになっている場合、ページのコンテンツは、ページ出力が自動的にクリアされるまで、または返されるまで、ファイル ヘッダーを送信する前にメモリにキャッシュされます。これは、静的ページの生成にうまく利用でき、テンプレートにうまく反映できます。
さらに、ASP にはパブリック パラメータを保存できるオブジェクト アプリケーションがあり、これもキャッシュとみなされますが、開発者がそのようなオブジェクトを作成するのはこれまで見たことがありません。実際、それは必要ありません。キャッシュ技術 ビューステートを使用しており、キャッシュはファイルの関連付けです (必ずしも正確であるとは限りません)。ファイルが変更されずにタイムアウトしない場合 (注 1)、キャッシュが読み取られます。これがアイデアです。このソースコードを見てください:
<ol class="dp-c"> <li class="alt"><span><span><?PHP </span></span></li><li><span> <span class="keyword">class</span><span> cache{ </span></span></li><li class="alt"><span> <span class="keyword">private</span><span> </span><span class="vars">$cache_dir</span><span>; </span></span></li><li><span> <span class="keyword">private</span><span> </span><span class="vars">$expireTime</span><span>=180;</span><span class="comment">//缓存的时间是 60 秒 </span><span> </span></span></li><li class="alt"><span> <span class="keyword">function</span><span> __construct(</span><span class="vars">$cache_dirname</span><span>){ </span></span></li><li><span> <span class="keyword">if</span><span>(!@</span><span class="func">is_dir</span><span>(</span><span class="vars">$cache_dirname</span><span>)){ </span></span></li><li class="alt"><span> <span class="keyword">if</span><span>(!@</span><span class="func">mkdir</span><span>(</span><span class="vars">$cache_dirname</span><span>,0777)){ </span></span></li><li><span> <span class="vars">$this</span><span>->warn(</span><span class="string">'缓存文件不存在而且不能创建,需要手动创建.'</span><span>); </span></span></li> <li class="alt"><span> <span class="keyword">return</span><span> false; </span></span></li> <li><span> } </span></li> <li class="alt"><span> } </span></li> <li><span> <span class="vars">$this</span><span>->cache_dir = </span><span class="vars">$cache_dirname</span><span>; </span></span></li> <li class="alt"><span> } </span></li> <li><span> <span class="keyword">function</span><span> __destruct(){ </span></span></li> <li class="alt"><span> <span class="func">echo</span><span> </span><span class="string">'Cache class bye.'</span><span>; </span></span></li> <li><span> } </span></li> <li class="alt"><span> </span></li> <li><span> <span class="keyword">function</span><span> get_url() { </span></span></li> <li class="alt"><span> <span class="keyword">if</span><span> (!isset(</span><span class="vars">$_SERVER</span><span>[</span><span class="string">'REQUEST_URI'</span><span>])) { </span></span></li> <li><span> <span class="vars">$url</span><span> = </span><span class="vars">$_SERVER</span><span>[</span><span class="string">'REQUEST_URI'</span><span>]; </span></span></li> <li class="alt"><span> }<span class="keyword">else</span><span>{ </span></span></li> <li><span> <span class="vars">$url</span><span> = </span><span class="vars">$_SERVER</span><span>[</span><span class="string">'SCRIPT_NAME'</span><span>]; </span></span></li> <li class="alt"><span> <span class="vars">$url</span><span> .= (!emptyempty(</span><span class="vars">$_SERVER</span><span>[</span><span class="string">'QUERY_STRING'</span><span>])) ? </span><span class="string">'?'</span><span> . </span><span class="vars">$_SERVER</span><span>[</span><span class="string">'QUERY_STRING'</span><span>] : </span><span class="string">''</span><span>; </span></span></li> <li><span> } </span></li> <li class="alt"><span> </span></li> <li><span> <span class="keyword">return</span><span> </span><span class="vars">$url</span><span>; </span></span></li> <li class="alt"><span> } </span></li> <li><span> <span class="keyword">function</span><span> warn(</span><span class="vars">$errorstring</span><span>){ </span></span></li> <li class="alt"><span> <span class="func">echo</span><span> </span><span class="string">"<b><font color='red'>发生错误:<pre class="brush:php;toolbar:false">"</span><span>.</span><span class="vars">$errorstring</span><span>.</span><span class="string">"";