我在'head'中有两个javascript加载Joomla的实例。
第一个来自模板。 第二个来自一个组件。
我需要删除第二个实例,如下所示:
<!-- keep this one -->
<script src="//code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script>
<!-- remove this one -->
<script src="//code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script>
我如何用PHP做到这一点?
修改 的
我可以做这样的事情(不是php dude)删除第二个实例吗?
$string='<script src="//code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script>' ;
$string_array=explode(",","$string");
$output[]=$string_array[0];
for($i=1;$i<count($string_array);$i++){
if(!in_array($string_array[$i],$output)){
$output[]=$string_array[$i];
}
}
print implode(",",$output);
答案 0 :(得分:0)
这里首先要注意的是,两位代码都没有特别好写 - 即使从本地缓存中获取,两者都会在很长一段时间内阻止html加载。使用CMS的一个主要原因是,您可以最大限度地减少对HTML外部资源的调用次数,以提高性能。
我可以做这样的事吗
是的,但是您需要启用输出缓冲并将其挂钩到正确的代码中,这将比维护插件/模板更多地维护PITA。
或者你可以将它实现为Apache输出过滤器 - 但是(AFAIK)它(当前)不能调用fastCGI或mod_php作为输出过滤器。您可以实现一个简单的HTTP代理脚本作为请求的终点并在那里重写HTML。
合并请求的工具(例如mod_pagespeed)可能会自动删除重复的请求(尽管documentation for mod_pagespeed's combine_javascript没有说明它如何处理这种情况)。