Please remove google fonts from the forum

I often find that the forums take FOREVER to load. Like, I have a screenshot of it taking 8+ minutes and the page not even loading.

The reason this seems to happen is because of google fonts. I run localCDN and ublock origin. If I toggle ‘Block Google Fonts’ off, refresh, and toggle it back on, the forum loads instantly. I can’t find the javascript line that is causing the 30 second waits between loading each of the 90 or so javascript/css files the forum uses, but something is causing it to wait 30 seconds between sending each result…and blocking google fonts seems to be a culprit. Stop giving google free data; you whine about facebook pixels…google fonts are just a another type of pixel! :stuck_out_tongue:

Edit: I’m using Firefox. So maybe that’s why more people don’t use it. I try to avoid giving Le Gurgle as much of my data as possible.

2 Likes

if you choose to block resources on the internet that’s your prerogative but expecting others to oblige is a bit much

11 Likes

Wont fix.

Breaking UX for the many because of ones need isnt exactly sane

1 Like

WON’TFIX

Goblin made me do it.

I have no power to fix things here anyway.

2 Likes

it looks like the level1techs blue theme uses the google fonts and a hard-reload of the other theme makes it work without google fonts

in about 4 hours after the page loads and you can get into your profile settings, use Discourse Black

3 Likes

i´m also using Firefox on my old core i5 laptop with 4GB memory and Linux.
And the forum loads totally fine on my end.

Like others already pointed out the problem is likely at your end.
Unfortunately i don´t think that we could really help in regards to this.
However your could try the fix that @anon55922884 posted above that may work for you.

Grtz.

With firefox (and fennec on mobile) I use Noscript plugin to block the fonts

Check it out; might allow you to reduce cross site scripting for other stuff as well

Working on GrapheneOS

1 Like

I like my privacy too but I think this should be fixed on your end rather than the server’s end.


localCDN makes you more unique and fingerprintable especially if you use it with a VPN (you are using a VPN, right?).

Just use Firefox Profiles per website you visit with no addons (even ublock) for better isolation of cookies.

For normal/general web browsing, use Mullvad Browser. Its based on Tor Browser (and supported down/upstream) without the Tor Network and works without a Mullvad account.

Dont sweat the Google Fonts. It is weirder if you block it. Blend in the crowd and dont be the one that stands out with extra addons.

Hard nope on the web beaconing for me…

I understand uniquely identifying browser argument, but beaconing to central web is still giving direct visits, instead of having to collate from places that sell your data

2 Likes

That is what the Mullvad browser is for.

L1T forum seems benign enough for me to warrant its own profile with no addons.

1 Like

@Kingdud

to quote Arkenfox:

LocalCDN, Decentraleyes

  • Third parties are already partitioned if you use Total Cookie Protection (dFPI)
  • Replacing some version specific scripts on CDNs with local versions is not a comprehensive solution and is a form of enumerating badness. While it may work with some scripts that are included it doesn’t help with most other third party connections
  • CDN extensions don’t really improve privacy as far as sharing your IP address is concerned and their usage is fingerprintable as this Tor Project developer points out. They are the wrong tool for the job and are not a substitute for a good VPN or Tor Browser. Its worth noting the resources for Decentraleyes are over three years out of date and would not likely be used anyway

Also @Trooper_ish more from the Arkenfox

  • uMatrix
    • :warning: No longer maintained, the last release was Sept 2019 except for a one-off patch to fix a vulnerability
    • Everything uMatrix did can be covered by prefs or other extensions: use uBlock Origin for any content blocking.
  • NoScript
    • Redundant with uBlock Origin
  • Ghostery, Disconnect, Privacy Badger, etc
3 Likes

Sure, UBO is a good one from gorhil, but not available on all platforms.

It’s also less convenient than Noscript.

Iirc, on chromium I just use UBO

Umatrix was simpler, and worked better with my workflow than UBO, but like you say, no longer supported.

I interact with websites, so of course they will profile me, gathering fingerprints.

I still see this as different to beaconing services, and tracking pixels from third parties.

Of course, this could make me more identifiable. And, I do have a rather fetching aluminum headpiece…

I will check out total cookie protection, but like you said, multi-tab isolation is better for that in firefox or whole browser profiles for other browsers

1 Like

Once they fonts are downloaded, they will be cached until you manually empty the cache. If you’re doing this then you’re effectively forcing a cold start each and every time which is terrible from a performance perspective.

And it taking 5 minutes from a CDN doesn’t make sense since they are on the edge closest to you (Cloudflare). So if you block them or whatever then good luck.

And you don’t have to completely disable or remove fonts, just set them load async so that the initial poll is sent on load and then once its fetch is complete the fonts just ‘snap in’.

I am not familiar with localCDN but if that is what is what is caching and its taking 5 minutes, its either running with enough horse power of a covid tester, or its timing out after a long wait. Leading me to think of a misconfiguration in some settings.

Just to prove a point: here is the unminified source code from the highlighted area of your screenshot. I thought we could take a look together.:


define("discourse/plugins/spoiler-alert/initializers/spoiler-alert", ["exports", "discourse/lib/plugin-api", "discourse/lib/to-markdown", "discourse/plugins/spoiler-alert/lib/apply-spoiler"], function (e, i, t, r) {
    "use strict";
    function l(e) {
        e.querySelectorAll(".spoiler").forEach((e) => {
            e.classList.remove("spoiler"), e.classList.add("spoiled"), (0, r.default)(e);
        });
    }
    function o(e) {
        e.decorateCookedElement(l, { id: "spoiler-alert" }),
            e.addComposerToolbarPopupMenuOption({
                icon: "magic",
                label: "spoiler.title",
                action: (e) => {
                    e.applySurround("[spoiler]", "[/spoiler]", "spoiler_text", { multiline: !1, useBlockMode: !0 });
                },
            }),
            (0, t.addTagDecorateCallback)(function () {
                "spoiled" === this.element.attributes.class && ((this.prefix = "[spoiler]"), (this.suffix = "[/spoiler]"));
            }),
            (0, t.addBlockDecorateCallback)(function (e) {
                const { name: i, attributes: t } = this.element;
                if ("div" === i && "spoiled" === t.class) return (this.prefix = "[spoiler]"), (this.suffix = "[/spoiler]"), e.trim();
            });
    }
    Object.defineProperty(e, "__esModule", { value: !0 }), (e.default = void 0), (e.initializeSpoiler = o);
    e.default = {
        name: "spoiler-alert",
        initialize(e) {
            e.lookup("service:site-settings").spoiler_enabled && (0, i.withPluginApi)("1.15.0", o);
        },
    };
}),
    define("discourse/plugins/spoiler-alert/lib/apply-spoiler", ["exports", "discourse-i18n"], function (e, i) {
        "use strict";
        Object.defineProperty(e, "__esModule", { value: !0 }),
            (e.default = function (e) {
                l(e),
                    e.addEventListener("click", (i) => {
                        o(i, e);
                    }),
                    e.addEventListener("keydown", (i) => {
                        "Enter" === i.key && o(i, e);
                    });
            });
        const t = ["a", "area", "audio", "button", "details", "embed", "iframe", "img.animated", "input", "map", "object", "option", "portal", "select", "textarea", "track", "video", ".lightbox"].join(", ");
        function r(e, i) {
            Object.entries(i).forEach((i) => {
                let [t, r] = i;
                null === r ? e.removeAttribute(t) : e.setAttribute(t, r);
            });
        }
        function l(e) {
            r(e, { role: "button", tabindex: "0", "data-spoiler-state": "blurred", "aria-expanded": !1, "aria-label": i.default.t("spoiler.label.show"), "aria-live": "polite" }),
                e.classList.add("spoiler-blurred"),
                Array.from(e.children).forEach((e) => {
                    e.setAttribute("aria-hidden", !0);
                });
        }
        function o(e, i) {
            "blurred" === i.getAttribute("data-spoiler-state")
                ? ((function (e) {
                      r(e, { "data-spoiler-state": "revealed", "aria-expanded": !0, "aria-label": null, role: null }),
                          e.classList.remove("spoiler-blurred"),
                          Array.from(e.children).forEach((e) => {
                              e.removeAttribute("aria-hidden");
                          });
                  })(i),
                  e.preventDefault())
                : (function (e) {
                      return e.defaultPrevented || e.target.closest(t);
                  })(e) ||
                  window.getSelection() + "" != "" ||
                  l(i);
        }
    }),
    define("discourse/plugins/spoiler-alert/lib/discourse-markdown/spoiler-alert", ["exports"], function (e) {
        "use strict";
        Object.defineProperty(e, "__esModule", { value: !0 }),
            (e.setup = function (e) {
                e.allowList(["span.spoiler", "div.spoiler"]),
                    e.markdownIt
                        ? (function (e) {
                              e.registerOptions((e, i) => {
                                  e.features["spoiler-alert"] = !!i.spoiler_enabled;
                              }),
                                  e.registerPlugin((e) => {
                                      e.inline.bbcode.ruler.push("spoiler", { tag: "spoiler", wrap: "span.spoiler" }), e.block.bbcode.ruler.push("spoiler", { tag: "spoiler", wrap: "div.spoiler" });
                                  });
                          })(e)
                        : e.addPreProcessor(r);
            });
        const i = /\n|<img|!\[[^\]]*\][(\[]/;
        function t(e, t) {
            const r = i.test(t) ? "div" : "span";
            return `<${r} class='spoiler'>${t}</${r}>`;
        }
        function r(e) {
            let i;
            e ||= "";
            do {
                (i = e), (e = e.replace(/\[spoiler\]((?:(?!\[spoiler\]|\[\/spoiler\])[\S\s])*)\[\/spoiler\]/gi, t));
            } while (e !== i);
            return e;
        }
    });

//# sourceMappingURL=spoiler-alert-c117d91598beb6e547891e4e9fb9c1d814ecb4547858e57c0f253e10f8ca0521.map
//!

I love all the “Won’t fix” comments from people who literally have 0 impact on the site. As if you matter enough for your words to have any meaning at all.

“Not using a cached resource makes your fingerprint more unique, not less!” …yeah. Listen, according to Chris Beck, 4lbs of c4 can take out the internet to the whole US (or world? I forget what he said). So there’s no hiding from that level of fingerprinting. If I just make someone have to maintain an extra ‘if’ statement, because they insist on doing things they shouldn’t, that’s enough defiance for me.

As you can see, this is my first revisit to the forums since May. No tears will be shed at me continuing not to visit due to this issue.

I’ll give the non-default theme a try and see if that fixes it. Seeing as that was the one piece of actually beneficial advice out of all the replies.

2 Likes

Sorry bud, the google fonts seem to be on all the themes.

And on other websites too.

I suggest you sinkhole it and carry on.

Pages taking more than half a minute, points to something being wrong.

If you dns hole it, the sinkhole should immediately return null, and page should continue to load.

1 Like

I’m not For them, but also not asking the forum to remove them.

I choose to be creeped out by spy beacons, so I choose to block.

Some people, even use the great feature of singing in here, with their Google account.

Not my speed, but they can do them…