Bootstrap的CDN的WordPress后备方式不依赖JavaScript?

时间:2019-01-17 13:44:56

标签: css wordpress bootstrap-4 cdn

使用Bootstrap 4为WordPress开发主题我熟悉对ApplicationListener<JobExecutionEvent>进行编码的建议方法:

<div>

并使用JavaScript进行检查:

<div id="bootstrapCssTest" class="hidden"></div>

参考:“ How to load local copy of bootstrap css when the cdn server is down?”,但我想一种方法来测试没有JavaScript的CSS,并根据是否找到CDN来排队Bootstrap的CSS。经过研究,我了解到<script type="text/javascript"> if ($('#bootstrapCssTest').is(':visible') === true) { $('<link href="/localcopy/css/bootstrap.css" rel="stylesheet" type="text/css" />').appendTo('head'); } </script> 可能始终不能在服务器级别上使用,因此我选择了get_headers,代码:

fopen

是否有更好的方法来检查是否可以使用不使用JavaScript进行测试的Bootstrap CSS CDN?我是否应该检查“ HTTP / 1.1 200 OK”以外的任何内容?与function bootstrap_css() { $bootstrap_cdn = 'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'; $cdn_check = @get_headers($bootstrap_cdn); if ($cdn_check[0] === "HTTP/1.1 200 OK") : wp_enqueue_style('bootstrap',$bootstrap_cdn,array(),'4.2.1'); function add_cross_origin($html,$handle) { if ('bootstrap' === $handle) { return str_replace("media='all'","media='all' integrity='sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS' crossorigin='anonymous'",$html); } return $html; } add_filter('style_loader_tag','add_cross_origin',10,2); else : wp_enqueue_style('bootstrap',get_site_url() . '/css/bootstrap.min.css',false,'4.2.1'); endif; } add_action('wp_enqueue_scripts','bootstrap_css'); 相比,cURL会更好吗?

1 个答案:

答案 0 :(得分:0)

在第一次php脚本尝试访问CSS文件之后,服务器返回状态代码304。最简单的实现方法如下:

function bootstrap_css() {
$bootstrap_cdn   = 'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css';
$cdn_check       =  @get_headers($bootstrap_cdn);

if (strpos($cdn_check[0], "200") !== false || strpos($cdn_check[0], "304") !== false) :
    wp_enqueue_style('bootstrap',$bootstrap_cdn,array(),'4.2.1');

function add_cross_origin($html,$handle) {
    if ('bootstrap' === $handle) {
        return str_replace("media='all'","media='all' integrity='sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS' crossorigin='anonymous'",$html);
    }
        return $html;
    }
add_filter('style_loader_tag','add_cross_origin',10,2);
    else :
        wp_enqueue_style('bootstrap',get_site_url() . '/css/bootstrap.min.css',false,'4.2.1');
    endif;
}
add_action('wp_enqueue_scripts','bootstrap_css');