您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Optimize webpage loading with native prefetching, priority hints, and lazy loading.
当前为
- // ==UserScript==
- // @name Enhanced Faster Webpage Loading (Optimized)
- // @namespace http://tampermonkey.net/
- // @version 3.0
- // @description Optimize webpage loading with native prefetching, priority hints, and lazy loading.
- // @match *://*/*
- // @grant none
- // @run-at document-end
- // ==/UserScript==
- (function () {
- 'use strict';
- const EXCLUDED_LINKS = ['/login', '/logout', '/signout', '/signin', '/account', '/auth'];
- // Lazy Load Images, Videos, and Iframes
- function setupLazyLoading(root = document) {
- const lazyElements = root.querySelectorAll("img[data-src], video[data-src], iframe[data-src]");
- function loadLazyElement(el) {
- if (el.dataset.src) {
- el.src = el.dataset.src;
- if (el.tagName.toUpperCase() === "VIDEO") el.load();
- el.removeAttribute("data-src");
- }
- }
- if ("IntersectionObserver" in window) {
- const observer = new IntersectionObserver((entries, observerInstance) => {
- entries.forEach(entry => {
- if (entry.isIntersecting) {
- loadLazyElement(entry.target);
- observerInstance.unobserve(entry.target);
- }
- });
- });
- lazyElements.forEach(el => observer.observe(el));
- } else {
- lazyElements.forEach(loadLazyElement);
- }
- }
- // Prefetch and Prioritize Links
- function enhancePrefetching() {
- document.querySelectorAll("a[href]").forEach(link => {
- const href = link.href;
- if (!EXCLUDED_LINKS.some(excluded => href.includes(excluded)) && !link.hasAttribute("data-no-prefetch")) {
- const prefetch = document.createElement("link");
- prefetch.rel = "prefetch";
- prefetch.href = href;
- prefetch.as = "document";
- document.head.appendChild(prefetch);
- // Use Priority Hints (if supported)
- link.setAttribute("importance", "high");
- }
- });
- }
- // Watch for dynamically added content
- function observeDynamicContent() {
- const observer = new MutationObserver(mutations => {
- mutations.forEach(mutation => {
- mutation.addedNodes.forEach(node => {
- if (node.nodeType === 1) {
- setupLazyLoading(node);
- enhancePrefetching();
- }
- });
- });
- });
- observer.observe(document.body, { childList: true, subtree: true });
- }
- // Initialize Enhancements
- function init() {
- setupLazyLoading();
- enhancePrefetching();
- observeDynamicContent();
- }
- if (document.readyState === "loading") {
- document.addEventListener("DOMContentLoaded", init);
- } else {
- init();
- }
- })();