如果在整个站点中全局使用的header.php中添加了jquery,那么如何停止仅为那些实际不需要的站点页面加载jquery库?如果我们不能使用多个标题。
问题的目的是不惩罚那些实际上不需要的缓慢加载的页面。
答案 0 :(得分:3)
如果您选择甚至使用标头开头,那么您的网站不应该需要多个全局标头。如果是这样,只需在所有页面上包含jQuery。它是一个小的缓存文件,不会影响浏览体验。
使用google-hosted version,可能会出现许多用户在访问您的网站之前已将其缓存的情况。
答案 1 :(得分:1)
我一直狠狠地把拳头钉在钉子上,同时要求其他人移动那把挡住的锤子......
为什么不从另一端解决问题并使用jQuery优化第一次加载?
如果您的大页面已经花了一段时间才能下载,为什么不分开效果较差的区域并使用$()。load()来填充那些?
该页面将加载更快(更好的用户体验),您不必向不需要它的页面添加任何其他处理。
干杯, -jc
答案 2 :(得分:0)
假设您从正确配置的网络服务器(或谷歌的CDN)加载jQuery文件,它将被缓存,而不是在每个页面上重新下载。假设一个访问者会在你的网站上至少找到一个需要jQuery的页面,那么你真的不会通过在不使用库中任何javascript功能的页面上加载来删除它。
答案 3 :(得分:0)
首先,使用压缩的jquery进行生产。它要小得多。其次,IIRC,一旦jquery与第一页一起下载,它将被缓存,并且不需要从服务器检索每个后续请求。
否则,如果你真的只需要在那些需要它的页面上显式加载jquery,你必须有一些方法让页面正文告诉header.php它不需要加载jquery。如果在“body.php”之前加载header.php,那么没有一些花哨的输出缓冲等就很难做到。
如果您正在使用像Smarty这样的模板系统,您可以在母版页模板中使用条件来检查您在body.php中设置的$ loadjquery标志,然后再发送整个页面进行渲染。但这也很复杂。
答案 4 :(得分:0)
你的问题非常笼统,有些具体可能很棒,甚至可能是网站的链接。就个人而言,如果您使用CMS,我会尝试为该页面制作某种“标志”,或者如果您只是加载页面然后从该页面加载标题,请在加载标题之前插入变量并使用该标题作为加载jQuery的标志。
一个例子: 如果用户想要查看www.mysite.com,则会加载以下文件:www.mysite.com/index.php,其中包含以下代码:
<?php $needJQuery = true;
include('header.php');
echo 'content will go here';
include('footer.php'); ?>
header.php会包含如下内容:
<?php if ($needJQuery) { ?>
<script src="/jquery/jquery-min-3.2.1.js" />
etc. for all the content that you need above/below.
<?php } ?>
对于不需要加载jQuery的页面,您可以将$ needJQuery保留为undefined,也可以按以下步骤操作:
<?php $needJQuery = false; ?>
希望这有帮助,
答案 5 :(得分:0)
如前所述,修改头文件,以便检查是否存在flag变量,并在需要时仅输出jquery头。
如果您无法修改头文件,可以在打开输出缓冲的情况下加载它并在输出到客户端之前过滤输出:
<?php
ob_start();
include('header.php');
$header = ob_get_flush();
$cleanheader = some_operation_that_removes_the_jquery_script_tags($header);
echo $cleanheader
?>