Skip to content

[5.x] Reduce the number of times the fieldsCache is reset - #9585

Merged
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less
Apr 16, 2024
Merged

[5.x] Reduce the number of times the fieldsCache is reset#9585
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less

Conversation

@JohnathonKoster

@JohnathonKosterJohnathonKoster commented Feb 24, 2024

Copy link
Copy Markdown
Contributor

This PR reduces number of times the fieldsCache is reset inside the Blueprint class. If the new parent has the same blueprint has the previous parent, it will continue to reuse those fields instead of clearing the cache every time.

Note: The following logic (https://github.com/statamic/cms/pull/9585/files#diff-00e780e9caacd1aa9dcb1834686226b1818cc7c99fc24445a2057d09df87e755R629) has been successful in reducing the number of times the fieldsCache is reset, but wouldn't mind this being sanity-checked 🙂

@JohnathonKoster
JohnathonKoster marked this pull request as draft February 25, 2024 17:12
@JohnathonKoster
JohnathonKoster marked this pull request as ready for review February 25, 2024 20:30
@JohnathonKosterJohnathonKoster mentioned this pull request Feb 25, 2024
37 tasks
jasonvarga
jasonvarga previously requested changes Mar 7, 2024

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please target master and adjust the PR title to show [5.x].

@JohnathonKoster
JohnathonKoster changed the base branch from 4.x to masterMarch 8, 2024 01:08
@JohnathonKosterJohnathonKoster changed the title [4.x] Reduce the number of times the fieldsCache is reset[5.x] Reduce the number of times the fieldsCache is resetMar 8, 2024
@jasonvarga
jasonvarga dismissed their stale reviewMarch 11, 2024 16:55

Requested changes were made.

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The /references page of the docs will reset 410 times and with this PR it drops down to 153. The home page goes from 96 to 21.

I don't see any noticeable difference in load times, but this PR is only a handful of lines now so I don't think it hurts.

@jasonvarga
jasonvarga merged commit f8f0226 into statamic:masterApr 16, 2024
@jasonvarga
jasonvarga deleted the call-reset-field-cache-less branch April 16, 2024 14:01
@aerni

Copy link
Copy Markdown
Contributor

This PR causes some major issues when extending blueprints in my Advanced SEO addon. I haven't quite figured out at what point the caching is causing issues, but removing the lines of this PR fixes it. I'm not sure what's the best way to move forward?

jasonvarga pushed a commit that referenced this pull request May 20, 2024
Co-authored-by: John Koster <john@stillat.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

@JohnathonKoster@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
[5.x] Reduce the number of times the `fieldsCache` is reset by JohnathonKoster · Pull Request #9585 · statamic/cms · GitHub
Skip to content

[5.x] Reduce the number of times the fieldsCache is reset - #9585

Merged
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less
Apr 16, 2024
Merged

[5.x] Reduce the number of times the fieldsCache is reset#9585
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less

Conversation

@JohnathonKoster

@JohnathonKosterJohnathonKoster commented Feb 24, 2024

Copy link
Copy Markdown
Contributor

This PR reduces number of times the fieldsCache is reset inside the Blueprint class. If the new parent has the same blueprint has the previous parent, it will continue to reuse those fields instead of clearing the cache every time.

Note: The following logic (https://github.com/statamic/cms/pull/9585/files#diff-00e780e9caacd1aa9dcb1834686226b1818cc7c99fc24445a2057d09df87e755R629) has been successful in reducing the number of times the fieldsCache is reset, but wouldn't mind this being sanity-checked 🙂

@JohnathonKoster
JohnathonKoster marked this pull request as draft February 25, 2024 17:12
@JohnathonKoster
JohnathonKoster marked this pull request as ready for review February 25, 2024 20:30
@JohnathonKosterJohnathonKoster mentioned this pull request Feb 25, 2024
37 tasks
jasonvarga
jasonvarga previously requested changes Mar 7, 2024

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please target master and adjust the PR title to show [5.x].

@JohnathonKoster
JohnathonKoster changed the base branch from 4.x to masterMarch 8, 2024 01:08
@JohnathonKosterJohnathonKoster changed the title [4.x] Reduce the number of times the fieldsCache is reset[5.x] Reduce the number of times the fieldsCache is resetMar 8, 2024
@jasonvarga
jasonvarga dismissed their stale reviewMarch 11, 2024 16:55

Requested changes were made.

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The /references page of the docs will reset 410 times and with this PR it drops down to 153. The home page goes from 96 to 21.

I don't see any noticeable difference in load times, but this PR is only a handful of lines now so I don't think it hurts.

@jasonvarga
jasonvarga merged commit f8f0226 into statamic:masterApr 16, 2024
@jasonvarga
jasonvarga deleted the call-reset-field-cache-less branch April 16, 2024 14:01
@aerni

Copy link
Copy Markdown
Contributor

This PR causes some major issues when extending blueprints in my Advanced SEO addon. I haven't quite figured out at what point the caching is causing issues, but removing the lines of this PR fixes it. I'm not sure what's the best way to move forward?

jasonvarga pushed a commit that referenced this pull request May 20, 2024
Co-authored-by: John Koster <john@stillat.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

@JohnathonKoster@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [5.x] Reduce the number of times the `fieldsCache` is reset by JohnathonKoster · Pull Request #9585 · statamic/cms · GitHub
Skip to content

[5.x] Reduce the number of times the fieldsCache is reset - #9585

Merged
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less
Apr 16, 2024
Merged

[5.x] Reduce the number of times the fieldsCache is reset#9585
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less

Conversation

@JohnathonKoster

@JohnathonKosterJohnathonKoster commented Feb 24, 2024

Copy link
Copy Markdown
Contributor

This PR reduces number of times the fieldsCache is reset inside the Blueprint class. If the new parent has the same blueprint has the previous parent, it will continue to reuse those fields instead of clearing the cache every time.

Note: The following logic (https://github.com/statamic/cms/pull/9585/files#diff-00e780e9caacd1aa9dcb1834686226b1818cc7c99fc24445a2057d09df87e755R629) has been successful in reducing the number of times the fieldsCache is reset, but wouldn't mind this being sanity-checked 🙂

@JohnathonKoster
JohnathonKoster marked this pull request as draft February 25, 2024 17:12
@JohnathonKoster
JohnathonKoster marked this pull request as ready for review February 25, 2024 20:30
@JohnathonKosterJohnathonKoster mentioned this pull request Feb 25, 2024
37 tasks
jasonvarga
jasonvarga previously requested changes Mar 7, 2024

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please target master and adjust the PR title to show [5.x].

@JohnathonKoster
JohnathonKoster changed the base branch from 4.x to masterMarch 8, 2024 01:08
@JohnathonKosterJohnathonKoster changed the title [4.x] Reduce the number of times the fieldsCache is reset[5.x] Reduce the number of times the fieldsCache is resetMar 8, 2024
@jasonvarga
jasonvarga dismissed their stale reviewMarch 11, 2024 16:55

Requested changes were made.

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The /references page of the docs will reset 410 times and with this PR it drops down to 153. The home page goes from 96 to 21.

I don't see any noticeable difference in load times, but this PR is only a handful of lines now so I don't think it hurts.

@jasonvarga
jasonvarga merged commit f8f0226 into statamic:masterApr 16, 2024
@jasonvarga
jasonvarga deleted the call-reset-field-cache-less branch April 16, 2024 14:01
@aerni

Copy link
Copy Markdown
Contributor

This PR causes some major issues when extending blueprints in my Advanced SEO addon. I haven't quite figured out at what point the caching is causing issues, but removing the lines of this PR fixes it. I'm not sure what's the best way to move forward?

jasonvarga pushed a commit that referenced this pull request May 20, 2024
Co-authored-by: John Koster <john@stillat.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

@JohnathonKoster@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [5.x] Reduce the number of times the `fieldsCache` is reset by JohnathonKoster · Pull Request #9585 · statamic/cms · GitHub
Skip to content

[5.x] Reduce the number of times the fieldsCache is reset - #9585

Merged
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less
Apr 16, 2024
Merged

[5.x] Reduce the number of times the fieldsCache is reset#9585
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less

Conversation

@JohnathonKoster

@JohnathonKosterJohnathonKoster commented Feb 24, 2024

Copy link
Copy Markdown
Contributor

This PR reduces number of times the fieldsCache is reset inside the Blueprint class. If the new parent has the same blueprint has the previous parent, it will continue to reuse those fields instead of clearing the cache every time.

Note: The following logic (https://github.com/statamic/cms/pull/9585/files#diff-00e780e9caacd1aa9dcb1834686226b1818cc7c99fc24445a2057d09df87e755R629) has been successful in reducing the number of times the fieldsCache is reset, but wouldn't mind this being sanity-checked 🙂

@JohnathonKoster
JohnathonKoster marked this pull request as draft February 25, 2024 17:12
@JohnathonKoster
JohnathonKoster marked this pull request as ready for review February 25, 2024 20:30
@JohnathonKosterJohnathonKoster mentioned this pull request Feb 25, 2024
37 tasks
jasonvarga
jasonvarga previously requested changes Mar 7, 2024

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please target master and adjust the PR title to show [5.x].

@JohnathonKoster
JohnathonKoster changed the base branch from 4.x to masterMarch 8, 2024 01:08
@JohnathonKosterJohnathonKoster changed the title [4.x] Reduce the number of times the fieldsCache is reset[5.x] Reduce the number of times the fieldsCache is resetMar 8, 2024
@jasonvarga
jasonvarga dismissed their stale reviewMarch 11, 2024 16:55

Requested changes were made.

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The /references page of the docs will reset 410 times and with this PR it drops down to 153. The home page goes from 96 to 21.

I don't see any noticeable difference in load times, but this PR is only a handful of lines now so I don't think it hurts.

@jasonvarga
jasonvarga merged commit f8f0226 into statamic:masterApr 16, 2024
@jasonvarga
jasonvarga deleted the call-reset-field-cache-less branch April 16, 2024 14:01
@aerni

Copy link
Copy Markdown
Contributor

This PR causes some major issues when extending blueprints in my Advanced SEO addon. I haven't quite figured out at what point the caching is causing issues, but removing the lines of this PR fixes it. I'm not sure what's the best way to move forward?

jasonvarga pushed a commit that referenced this pull request May 20, 2024
Co-authored-by: John Koster <john@stillat.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

@JohnathonKoster@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' [5.x] Reduce the number of times the `fieldsCache` is reset by JohnathonKoster · Pull Request #9585 · statamic/cms · GitHub
Skip to content

[5.x] Reduce the number of times the fieldsCache is reset - #9585

Merged
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less
Apr 16, 2024
Merged

[5.x] Reduce the number of times the fieldsCache is reset#9585
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less

Conversation

@JohnathonKoster

@JohnathonKosterJohnathonKoster commented Feb 24, 2024

Copy link
Copy Markdown
Contributor

This PR reduces number of times the fieldsCache is reset inside the Blueprint class. If the new parent has the same blueprint has the previous parent, it will continue to reuse those fields instead of clearing the cache every time.

Note: The following logic (https://github.com/statamic/cms/pull/9585/files#diff-00e780e9caacd1aa9dcb1834686226b1818cc7c99fc24445a2057d09df87e755R629) has been successful in reducing the number of times the fieldsCache is reset, but wouldn't mind this being sanity-checked 🙂

@JohnathonKoster
JohnathonKoster marked this pull request as draft February 25, 2024 17:12
@JohnathonKoster
JohnathonKoster marked this pull request as ready for review February 25, 2024 20:30
@JohnathonKosterJohnathonKoster mentioned this pull request Feb 25, 2024
37 tasks
jasonvarga
jasonvarga previously requested changes Mar 7, 2024

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please target master and adjust the PR title to show [5.x].

@JohnathonKoster
JohnathonKoster changed the base branch from 4.x to masterMarch 8, 2024 01:08
@JohnathonKosterJohnathonKoster changed the title [4.x] Reduce the number of times the fieldsCache is reset[5.x] Reduce the number of times the fieldsCache is resetMar 8, 2024
@jasonvarga
jasonvarga dismissed their stale reviewMarch 11, 2024 16:55

Requested changes were made.

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The /references page of the docs will reset 410 times and with this PR it drops down to 153. The home page goes from 96 to 21.

I don't see any noticeable difference in load times, but this PR is only a handful of lines now so I don't think it hurts.

@jasonvarga
jasonvarga merged commit f8f0226 into statamic:masterApr 16, 2024
@jasonvarga
jasonvarga deleted the call-reset-field-cache-less branch April 16, 2024 14:01
@aerni

Copy link
Copy Markdown
Contributor

This PR causes some major issues when extending blueprints in my Advanced SEO addon. I haven't quite figured out at what point the caching is causing issues, but removing the lines of this PR fixes it. I'm not sure what's the best way to move forward?

jasonvarga pushed a commit that referenced this pull request May 20, 2024
Co-authored-by: John Koster <john@stillat.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

@JohnathonKoster@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [5.x] Reduce the number of times the `fieldsCache` is reset by JohnathonKoster · Pull Request #9585 · statamic/cms · GitHub
Skip to content

[5.x] Reduce the number of times the fieldsCache is reset - #9585

Merged
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less
Apr 16, 2024
Merged

[5.x] Reduce the number of times the fieldsCache is reset#9585
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less

Conversation

@JohnathonKoster

@JohnathonKosterJohnathonKoster commented Feb 24, 2024

Copy link
Copy Markdown
Contributor

This PR reduces number of times the fieldsCache is reset inside the Blueprint class. If the new parent has the same blueprint has the previous parent, it will continue to reuse those fields instead of clearing the cache every time.

Note: The following logic (https://github.com/statamic/cms/pull/9585/files#diff-00e780e9caacd1aa9dcb1834686226b1818cc7c99fc24445a2057d09df87e755R629) has been successful in reducing the number of times the fieldsCache is reset, but wouldn't mind this being sanity-checked 🙂

@JohnathonKoster
JohnathonKoster marked this pull request as draft February 25, 2024 17:12
@JohnathonKoster
JohnathonKoster marked this pull request as ready for review February 25, 2024 20:30
@JohnathonKosterJohnathonKoster mentioned this pull request Feb 25, 2024
37 tasks
jasonvarga
jasonvarga previously requested changes Mar 7, 2024

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please target master and adjust the PR title to show [5.x].

@JohnathonKoster
JohnathonKoster changed the base branch from 4.x to masterMarch 8, 2024 01:08
@JohnathonKosterJohnathonKoster changed the title [4.x] Reduce the number of times the fieldsCache is reset[5.x] Reduce the number of times the fieldsCache is resetMar 8, 2024
@jasonvarga
jasonvarga dismissed their stale reviewMarch 11, 2024 16:55

Requested changes were made.

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The /references page of the docs will reset 410 times and with this PR it drops down to 153. The home page goes from 96 to 21.

I don't see any noticeable difference in load times, but this PR is only a handful of lines now so I don't think it hurts.

@jasonvarga
jasonvarga merged commit f8f0226 into statamic:masterApr 16, 2024
@jasonvarga
jasonvarga deleted the call-reset-field-cache-less branch April 16, 2024 14:01
@aerni

Copy link
Copy Markdown
Contributor

This PR causes some major issues when extending blueprints in my Advanced SEO addon. I haven't quite figured out at what point the caching is causing issues, but removing the lines of this PR fixes it. I'm not sure what's the best way to move forward?

jasonvarga pushed a commit that referenced this pull request May 20, 2024
Co-authored-by: John Koster <john@stillat.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

@JohnathonKoster@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [5.x] Reduce the number of times the `fieldsCache` is reset by JohnathonKoster · Pull Request #9585 · statamic/cms · GitHub
Skip to content

[5.x] Reduce the number of times the fieldsCache is reset - #9585

Merged
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less
Apr 16, 2024
Merged

[5.x] Reduce the number of times the fieldsCache is reset#9585
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less

Conversation

@JohnathonKoster

@JohnathonKosterJohnathonKoster commented Feb 24, 2024

Copy link
Copy Markdown
Contributor

This PR reduces number of times the fieldsCache is reset inside the Blueprint class. If the new parent has the same blueprint has the previous parent, it will continue to reuse those fields instead of clearing the cache every time.

Note: The following logic (https://github.com/statamic/cms/pull/9585/files#diff-00e780e9caacd1aa9dcb1834686226b1818cc7c99fc24445a2057d09df87e755R629) has been successful in reducing the number of times the fieldsCache is reset, but wouldn't mind this being sanity-checked 🙂

@JohnathonKoster
JohnathonKoster marked this pull request as draft February 25, 2024 17:12
@JohnathonKoster
JohnathonKoster marked this pull request as ready for review February 25, 2024 20:30
@JohnathonKosterJohnathonKoster mentioned this pull request Feb 25, 2024
37 tasks
jasonvarga
jasonvarga previously requested changes Mar 7, 2024

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please target master and adjust the PR title to show [5.x].

@JohnathonKoster
JohnathonKoster changed the base branch from 4.x to masterMarch 8, 2024 01:08
@JohnathonKosterJohnathonKoster changed the title [4.x] Reduce the number of times the fieldsCache is reset[5.x] Reduce the number of times the fieldsCache is resetMar 8, 2024
@jasonvarga
jasonvarga dismissed their stale reviewMarch 11, 2024 16:55

Requested changes were made.

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The /references page of the docs will reset 410 times and with this PR it drops down to 153. The home page goes from 96 to 21.

I don't see any noticeable difference in load times, but this PR is only a handful of lines now so I don't think it hurts.

@jasonvarga
jasonvarga merged commit f8f0226 into statamic:masterApr 16, 2024
@jasonvarga
jasonvarga deleted the call-reset-field-cache-less branch April 16, 2024 14:01
@aerni

Copy link
Copy Markdown
Contributor

This PR causes some major issues when extending blueprints in my Advanced SEO addon. I haven't quite figured out at what point the caching is causing issues, but removing the lines of this PR fixes it. I'm not sure what's the best way to move forward?

jasonvarga pushed a commit that referenced this pull request May 20, 2024
Co-authored-by: John Koster <john@stillat.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

@JohnathonKoster@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); [5.x] Reduce the number of times the `fieldsCache` is reset by JohnathonKoster · Pull Request #9585 · statamic/cms · GitHub
Skip to content

[5.x] Reduce the number of times the fieldsCache is reset - #9585

Merged
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less
Apr 16, 2024
Merged

[5.x] Reduce the number of times the fieldsCache is reset#9585
jasonvarga merged 9 commits into
statamic:masterfrom
JohnathonKoster:call-reset-field-cache-less

Conversation

@JohnathonKoster

@JohnathonKosterJohnathonKoster commented Feb 24, 2024

Copy link
Copy Markdown
Contributor

This PR reduces number of times the fieldsCache is reset inside the Blueprint class. If the new parent has the same blueprint has the previous parent, it will continue to reuse those fields instead of clearing the cache every time.

Note: The following logic (https://github.com/statamic/cms/pull/9585/files#diff-00e780e9caacd1aa9dcb1834686226b1818cc7c99fc24445a2057d09df87e755R629) has been successful in reducing the number of times the fieldsCache is reset, but wouldn't mind this being sanity-checked 🙂

@JohnathonKoster
JohnathonKoster marked this pull request as draft February 25, 2024 17:12
@JohnathonKoster
JohnathonKoster marked this pull request as ready for review February 25, 2024 20:30
@JohnathonKosterJohnathonKoster mentioned this pull request Feb 25, 2024
37 tasks
jasonvarga
jasonvarga previously requested changes Mar 7, 2024

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please target master and adjust the PR title to show [5.x].

@JohnathonKoster
JohnathonKoster changed the base branch from 4.x to masterMarch 8, 2024 01:08
@JohnathonKosterJohnathonKoster changed the title [4.x] Reduce the number of times the fieldsCache is reset[5.x] Reduce the number of times the fieldsCache is resetMar 8, 2024
@jasonvarga
jasonvarga dismissed their stale reviewMarch 11, 2024 16:55

Requested changes were made.

@jasonvargajasonvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The /references page of the docs will reset 410 times and with this PR it drops down to 153. The home page goes from 96 to 21.

I don't see any noticeable difference in load times, but this PR is only a handful of lines now so I don't think it hurts.

@jasonvarga
jasonvarga merged commit f8f0226 into statamic:masterApr 16, 2024
@jasonvarga
jasonvarga deleted the call-reset-field-cache-less branch April 16, 2024 14:01
@aerni

Copy link
Copy Markdown
Contributor

This PR causes some major issues when extending blueprints in my Advanced SEO addon. I haven't quite figured out at what point the caching is causing issues, but removing the lines of this PR fixes it. I'm not sure what's the best way to move forward?

jasonvarga pushed a commit that referenced this pull request May 20, 2024
Co-authored-by: John Koster <john@stillat.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants

@JohnathonKoster@aerni@jasonvarga