2011-03-28 95 views
1

我有一個基於PHP的網站哪個。 我使用開關盒來包含不同的頁面並導航。 我採用了一種方法,以便我的索引頁面包含一個導航欄和一個頁腳PHP網站預加載或緩存

我的問題是,每次我從一個頁面導航到另一個頁面時,一切又重新加載並使網站變得沉重。

<?php include('models/header.php'); ?> 
<div id="content"> 
<center> 

<div id="switch" align="center"> 

<?php 
switch($view) 
{ 
case 'Index': 
    include('pages/index.php'); 
    break; 

case 'Services': 
    include('pages/Services.php'); 
    break; 

case 'About': 
    include('pages/about.php'); 
    break; 

case 'Contact': 
    include('pages/contact.php'); 
    break; 

case 'Download': 
    include('pages/download.php'); 
    break; 

default: 
    include('pages/error.php'); 
} 
?> 
</div> 
</div> 
</center> 
<br> 
<?php include('models/footer.php'); ?> 
</div> 

是有辦法,我可以將它設置ü使這些元素,會預裝一次,並留在緩存中,這樣他們不需要被加載每次我瀏覽到一個新的一頁......?

回答

3

鑑於你的代碼,你實際上不需要需要緩存任何東西,這樣做可能會導致更多的實際需要的開銷。

緩存或不緩存,您仍然需要訪問文件,您的收益將成爲操作碼生成。但是PHP仍然需要訪問文件系統,除非您使用memcached解決方案和RAMFS,否則您將不會注意到真正的變化。

但是,您確實需要緩存您的代碼,出於顯而易見的原因,您應該看看APC,它是PHP的操作碼緩存。

基本上,它會緩存您對包含文件的調用並緩存PHP解釋器結果。

最後,我實際上建議您閱讀Best Practices for Speeding Up Your Web Site這將幫助您以更可觀的方式提升用戶體驗。

+0

我實際上希望有一些圖像客戶端緩存的圖像等,據我瞭解我的代碼是不是太重,無法解釋和產生的結果,所以我懷疑去通過頭痛f serverside緩存是需要我希望的方式在客戶端全部緩存圖像?這甚至有可能嗎? – user434885 2011-03-28 20:27:16

+0

結帳[添加過期標題](http://developer.yahoo.com/blogs/ydn/posts/2007/05/high_performanc_2/)&[配置ETags](http://developer.yahoo.com/blogs/ YDN /職位/ 2007/07/high_performanc_11 /) – 2011-03-28 20:33:27

0

Theres有很多不同的方式來做到這一點。我會推薦使用Smarty。

switch(strtolower($view)) { 
    case "download": 
      $smarty->assign("download_var", $downloadvar); 
      $smarty->display("Download.tpl"); 
      break; 
    ..... 
} 

UPDATE

我想這有點含糊依然。 Smarty實際上有一個編譯模板目錄,它保持了方便。您可以將smarty配置爲以多種不同的方式進行緩存,但基本思路是您擁有一個基於會話ID進行預編譯和存儲的平面文件。

1

如果瀏覽器選擇了,頁面中的元素(如圖像)將完全重新加載。如果你的元素是PHP文件,它們通常會在PHP頁面經常變化時完全重新加載。

雖然您可以在PHP中設置標題,告訴瀏覽器緩存頁面一段時間。有關更多信息,請參閱http://php.net/manual/en/function.header.php