1

我不得不清理/维护一些旧的 php 站点文件。有许多主要的 php 页面包含()基于规则的其他 php 文件。其中一些包括有如下几行:

<link href="css/styles.css" rel="stylesheet" type="text/css">
<script language="javascript" src="js/functions.js"></script>

有时,在构建 php 页面后,这些外部文件会多次包含在同一页面中。

这不仅仅是从 php 包含中删除这些外部文件链接的简单案例,因为有时放置 php 包含的位置,这是唯一的情况。

是否有某种检查,通过 php 或 js 来避免多次出现外部文件?

谢谢 :)

4

4 回答 4

2

作为一种简单的技巧,将这些 CSS 和 JS 文件添加到 PHP 文件中,并将 require_once 放入 PHP 文件中。这样,只有尚未包含该文件时才会包含该文件。

于 2011-07-22T08:49:39.090 回答
0

据我所知,没有简单的方法可以做到这一点,您可以重构整个代码库,以便服务器端包含逻辑只发生在文件中而不是整个应用程序中。

如果您打开缓存并设置正确的标头,我相信一旦外部文件已经缓存,浏览器将不会在后续请求同一文件的情况下尝试重新下载。

于 2011-07-22T08:45:11.147 回答
0

您可以在变量(例如 $styles_loaded = true 或更好,$LoadedImports['styles'] = true)中记录某个文件的导入(例如上面示例中的“styles.css”)并检查所有包含对于这个变量的值。这样你就知道是否要导入某个文件。或者按照 andreas 的建议进行重构。

于 2011-07-22T08:46:50.700 回答
0

您可以使用 PHP 并在包含文件时定义常量,如果您总是只在 PHP 或 JavaScript 中加载它们。

这可以作为 PHP 解决方案工作:

function checkJSLoad($var){
    if(!defined($var)){
        define($var, 1);
        return false;
    } else {
        return true;
    }
}

function javascriptLoad($location, $defined = ''){
    if(!$defined) { $defined = 'JS_' . $location; }

    if( !checkJSLoad($defined) ){
        return '<script type="text/javascript" src="'.$location.'"></script>';
    }   
}

然后你可以这样称呼它: javascript_load('/jquery.js','jquery'); 这将回显 js 文件的正确标记。

也许你可以用 css 做类似的事情

于 2011-07-22T08:47:20.683 回答