Greasy Fork is available in English.

[网页加载加速]CDNJS/UNPKG资源自动更换

自动替换网页中的CDNJS和UNPKG脚本/JS/CSS和图片资源,避免因资源无法连接或加载慢而导致的网页卡顿,显著提高网页加载速度

// ==UserScript==
// @name        [网页加载加速]CDNJS/UNPKG资源自动更换
// @description 自动替换网页中的CDNJS和UNPKG脚本/JS/CSS和图片资源,避免因资源无法连接或加载慢而导致的网页卡顿,显著提高网页加载速度
// @include     *
// @version     1
// @grant       none
// @namespace https://greasyfork.org/users/1302675
// ==/UserScript==

(function() {
    const cdnUrls = {
        'cdnjs.cloudflare.com/ajax/libs': 's4.zstatic.net/ajax/libs',
        'unpkg.com': 's4.zstatic.net/npm',
        'cdn.jsdelivr.net/npm': 's4.zstatic.net/npm',
        'fastly.jsdelivr.net/npm': 's4.zstatic.net/npm'
    };

    const scriptTags = document.getElementsByTagName('script');
    for (let i = 0; i < scriptTags.length; i++) {
        const scriptTag = scriptTags[i];
        const src = scriptTag.getAttribute('src');
        if (src) {
            for (const cdnUrl in cdnUrls) {
                if (src.includes(cdnUrl)) {
                    const newSrc = src.replace(cdnUrl, cdnUrls[cdnUrl]);
                    scriptTag.setAttribute('src', newSrc);
                    break;
                }
            }
        }
    }

    const linkTags = document.getElementsByTagName('link');
    for (let i = 0; i < linkTags.length; i++) {
        const linkTag = linkTags[i];
        const href = linkTag.getAttribute('href');
        if (href) {
            for (const cdnUrl in cdnUrls) {
                if (href.includes(cdnUrl)) {
                    const newHref = href.replace(cdnUrl, cdnUrls[cdnUrl]);
                    linkTag.setAttribute('href', newHref);
                    break;
                }
            }
        }
    }
})();