2009-10-07 142 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