2009-10-07 143 views
1

我想提出這種風格優化靜態PHP網站

<?php include "header.php" ?> 
<?php include "left.php" ?> 
<?php include "photos.php" ?> 

「靜態」 php網站在「photos.php」我從收藏夾3個JavaScript文件,我想這可能是一個很好的只在這個「photos.php」中包含javascript文件而不在「header.php」中。 但JavaScript應該只在頭部html標籤中。你有沒有更好的方法,或者我的很好?

非常感謝

回答

0

如果你要沿着這條路,你可以嘗試設置一個變量,你包括header.php存儲與否的JavaScript的需要文件之前。它可能可能沒有必要過多的汗水,但如果用戶傾向於堅持在您的網站上,他們將獲取這些文件一次,然後不再,因爲希望你的服務器將返回304 Not-Modified響應,他們將從您的瀏覽器的緩存中提供。

5

只要有可能,最好讓所有的JavaScript都在頭上。你可以沒有太大的困難。正如Dominic Rodger所說,將js文件包含在每個頁面上可能不是什麼大問題,因爲它們應該被緩存。

我傾向於爲這種事情創建大量變量的頁面模板類文件。更簡單的做法是與你已經做的更直接的聯繫,就是在包含頭文件之前設置一個變量,然後在頭文件中訪問該變量並在適當的情況下添加js。

<?php 
    $includePhotoJavascript = true; 
    include "header.php"; 
?> 

在頭文件:

if(isset($includePhotoJavascript) and $includePhotoJavascript == true) 
{ 
    // add the javascript 
} 
2

JavaScript並不僅是在頭部HTML標記。它實際上是advisable to put it at the end of the HTML file,因爲它們暫停加載HTML文件的其餘部分。

,你可以在header.php文件做的,是這樣的:

<html> 
<head> 
<title><?php print $title; ?></title> 
<?php 
foreach($javascript as $src){ 
?> 
    <script type="text/javascript" src="<?php print $src; ?>"></script> 
<?php 
} 
?> 
</head> 

然後您發佈的文件應該是這樣的:?

<?php 
$title = "Photo album"; 
$javascript = array("jsfile1.js", "file2.js"); 
include "header.php" 
include "left.php" 
include "photos.php" 

>

+1

我這樣做,除了我沒有額外的包裝文件,包括'photos.php',我只是把標題/ JavaScript變量,幷包括在photos.php本身,並使該已加載的頁面。 – DisgruntledGoat 2009-10-07 13:54:32

0

非常感謝您的想法。 我正在計劃使主頁(index.php)儘可能輕。所以 我只會在photos.php中加載javascript(lightbox.js),並嘗試做一個 LAZY LOADING到這個lightbox.js,所以當「第一次」訪問者去 photos.php JavaScript文件將被緩存。 和所有這些在後臺。 我認爲Facebook是一樣的。看這裏 Optimizing Facebook