我必须清理/维护一些旧的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进行某种检查以避免多次出现外部文件?
谢谢:)
答案 0 :(得分:2)
作为一个简单的黑客,将这些CSS和JS文件添加到PHP文件中,并将require_once放到PHP文件中。这样,只有在尚未包含文件的情况下才会包含该文件。
答案 1 :(得分:0)
据我所知,没有简单的方法可以做到这一点,你可以重新考虑整个代码库,使服务器端包含逻辑只发生在一个文件而不是整个应用程序中。
如果你打开缓存并设置正确的标题,我相信一旦外部文件已经被缓存,浏览器就不会在后续请求同一文件时尝试重新下载。
答案 2 :(得分:0)
您可以在变量中记录某个文件的导入(例如上面示例中的“styles.css”)(例如$ styles_loaded = true或更好,$ LoadedImports ['styles'] = true)并检查in all包含该变量的值。这样你就会知道是否要导入某个文件。或者像andreas建议的那样重构。
答案 3 :(得分: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做类似的事情
答案 4 :(得分:0)
使用http://api.jquery.com/jQuery.getScript/动态加载JS
或其他图书馆的类似功能。
在js中定义变量$ MY_LIBRARY_IDENTIFIER 如果已定义,则跳过其他加载js