开发者

Preventing jQuery from Loading

开发者 https://www.devze.com 2022-12-17 01:16 出处:网络
If jquery is added in globally used header.php across the site then How to开发者_StackOverflow中文版 stop to load jquery library only for those pages of site which doesn\'t need actually? If we can\'t

If jquery is added in globally used header.php across the site then How to开发者_StackOverflow中文版 stop to load jquery library only for those pages of site which doesn't need actually? If we can't use more than one header.

purpose of question is to not to penalize those page with slow loading which actually don't need.


Your site shouldn't need more than one global-header, if you opt to even use headers to begin with. If it does, just include jQuery on all pages. It's a small cached file, it won't hurt the browsing experience.

By using the google-hosted version, it may be the case that many of your uses already have it cached before they even reach your site.


I have been guilty of pounding my fist into the nail while asking everyone else to move the hammer that's in the way...

Why not tackle the problem from the other end and use jQuery to optimize the first load?

If you have big pages that are already taking a while to download, why not section off the less-performant areas and use $().load() to fill those in?

The page will load quicker (better user experience) and you don't have to be adding any additional processing to pages that don't need it.

Cheers, -jc


assuming you are loading the jQuery file from a correctly-configured webserver (or from google's CDN), it will be cached and not re-downloaded on each page. Assuming a visitor will hit at least one page on your site that needs jQuery then you really won't gain anything by trying to remove it from loading on pages that don't use any javascript features from the library.


First, use the compressed jquery for production. It's much smaller. Second, IIRC, once jquery is downloaded with the first page, it will be cached and won't need to be retrieved from your server for each subsequent request.

Otherwise, if you really need to explicitly load jquery only on those pages that need it, you would have to have some way for the body of your page to tell header.php that it doesn't need to load jquery. If header.php is loaded before "body.php" then that's pretty hard to do without some fancy output buffering or such.

If you're using a templating system like Smarty you could have a conditional in the master page template to check a $loadjquery flag that you set in body.php before sending the whole page off to be rendered. But that's complicated too.


Your question is very general, some specific would be great, maybe even a link to the site. Personally if you are using a CMS I would try to make some sort of "flag" for that page, or if you are simply loading a page and then loading the header from that page, insert a variable before you load the header and use that as your flag for loading jQuery.

An example: If a user wants to see www.mysite.com then the following file would be loaded: www.mysite.com/index.php with the following code:

<?php $needJQuery = true;
include('header.php');
echo 'content will go here';
include('footer.php'); ?>

header.php would include something such as this:

<?php if ($needJQuery) { ?>
<script src="/jquery/jquery-min-3.2.1.js" />
etc. for all the content that you need above/below.
<?php } ?>

For the pages that don't need jQuery loaded, you would either leave $needJQuery undefined or you would do as follows:

<?php $needJQuery = false; ?>

Hope this helps,


As stated earlier, modify the header file so it'll check for the presence of flag variable and only output the jquery headers if needed.

If you don't have the ability to modify the header file, you could load it with output buffering turned on and filter the output before it heads out to the client:

<?php
ob_start();
include('header.php');
$header = ob_get_flush();
$cleanheader = some_operation_that_removes_the_jquery_script_tags($header);
echo $cleanheader
?>
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号