Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Statamic Cache Requester

Artisan commands that queue up entry and glide urls for retrieval, which engages the caches and makes first time loads much quicker. Note that this package provides no benefict to Statamic applications that save cached images, i.e. cache => true.

This package can do a few things:

  1. Queue up all entry urls for retrieval which automatically engages the static cache, making first time loads quicker. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm
  2. Search for all image and picture sources within your entries and queue them up for a separate retrieval to initiate Glide generation. This means that all images and responsive variants will be pre-generated for your first visitor. This is particularly useful when you have lots of responsive image variants or if you are using Spatie's Statamic Responsive Images package. It can help to avoid server crashes for image heavy websites where Glide has a lot of processing to perform.
  3. Listens for EntrySaved events and automatically queues the entry's url for image requests.

CAUTION: Glide image manipulation can take a lot of work, especially when using responsive image variants and jpeg fallbacks. For example, a site using Spatie's responsive images addon could have 10 sizes and 2 formats per image. If this site has 1000 images then 20,000 variants will need to be manipulated by Glide. Keep an eye on your CPU usage, especially if using a hosting server that limits CPU (e.g. AWS-EC2).

Installation

This package relies on an release candidate version of simplehtmldom, which will be rejected by the latest Laravel versions that require min-stability of dev.

You can run both of these commands to install this package:

composer require simplehtmldom/simplehtmldom:"^2.0@RC"
composer require stuartcusackie/statamic-cache-requester
php please vendor:publish --tag=statamic-cache-requester-config

Check the config file for special features such as queue configuration and lightbox image request generation.

Commands

php artisan requester:entries

If you are using Static caching then it's a good idea to add this command to your deploy script (e.g. Forge). Deployments clear the static cache so this will rebuild it for all entries afterwards. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm

php artisan requester:images

You will usually only run this command once on initial deployment of the site, or after any major restructuring of asset filenames and folders. I do not recommend adding this to your deployment script as images rarely change.

php artisan requester:clear

Clears the configured queue. Be careful if using the default queue or a shared queue as all jobs will be removed.

Queues

This package utilises a 'cacherequester' queue on the default connection. You can update the queue connection and name using the STATAMIC_CACHE_REQUESTER_QUEUE_CONNECTION and STATAMIC_CACHE_REQUESTER_QUEUE_NAME env variables.

Todo

  • Add terms to entry requests
  • Add multisite functionality
  • Experiment with EntryCreated events to process images
  • Remove

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Statamic Cache Requester

Artisan commands that queue up entry and glide urls for retrieval, which engages the caches and makes first time loads much quicker. Note that this package provides no benefict to Statamic applications that save cached images, i.e. cache => true.

This package can do a few things:

  1. Queue up all entry urls for retrieval which automatically engages the static cache, making first time loads quicker. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm
  2. Search for all image and picture sources within your entries and queue them up for a separate retrieval to initiate Glide generation. This means that all images and responsive variants will be pre-generated for your first visitor. This is particularly useful when you have lots of responsive image variants or if you are using Spatie's Statamic Responsive Images package. It can help to avoid server crashes for image heavy websites where Glide has a lot of processing to perform.
  3. Listens for EntrySaved events and automatically queues the entry's url for image requests.

CAUTION: Glide image manipulation can take a lot of work, especially when using responsive image variants and jpeg fallbacks. For example, a site using Spatie's responsive images addon could have 10 sizes and 2 formats per image. If this site has 1000 images then 20,000 variants will need to be manipulated by Glide. Keep an eye on your CPU usage, especially if using a hosting server that limits CPU (e.g. AWS-EC2).

Installation

This package relies on an release candidate version of simplehtmldom, which will be rejected by the latest Laravel versions that require min-stability of dev.

You can run both of these commands to install this package:

composer require simplehtmldom/simplehtmldom:"^2.0@RC"
composer require stuartcusackie/statamic-cache-requester
php please vendor:publish --tag=statamic-cache-requester-config

Check the config file for special features such as queue configuration and lightbox image request generation.

Commands

php artisan requester:entries

If you are using Static caching then it's a good idea to add this command to your deploy script (e.g. Forge). Deployments clear the static cache so this will rebuild it for all entries afterwards. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm

php artisan requester:images

You will usually only run this command once on initial deployment of the site, or after any major restructuring of asset filenames and folders. I do not recommend adding this to your deployment script as images rarely change.

php artisan requester:clear

Clears the configured queue. Be careful if using the default queue or a shared queue as all jobs will be removed.

Queues

This package utilises a 'cacherequester' queue on the default connection. You can update the queue connection and name using the STATAMIC_CACHE_REQUESTER_QUEUE_CONNECTION and STATAMIC_CACHE_REQUESTER_QUEUE_NAME env variables.

Todo

  • Add terms to entry requests
  • Add multisite functionality
  • Experiment with EntryCreated events to process images
  • Remove

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Statamic Cache Requester

Artisan commands that queue up entry and glide urls for retrieval, which engages the caches and makes first time loads much quicker. Note that this package provides no benefict to Statamic applications that save cached images, i.e. cache => true.

This package can do a few things:

  1. Queue up all entry urls for retrieval which automatically engages the static cache, making first time loads quicker. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm
  2. Search for all image and picture sources within your entries and queue them up for a separate retrieval to initiate Glide generation. This means that all images and responsive variants will be pre-generated for your first visitor. This is particularly useful when you have lots of responsive image variants or if you are using Spatie's Statamic Responsive Images package. It can help to avoid server crashes for image heavy websites where Glide has a lot of processing to perform.
  3. Listens for EntrySaved events and automatically queues the entry's url for image requests.

CAUTION: Glide image manipulation can take a lot of work, especially when using responsive image variants and jpeg fallbacks. For example, a site using Spatie's responsive images addon could have 10 sizes and 2 formats per image. If this site has 1000 images then 20,000 variants will need to be manipulated by Glide. Keep an eye on your CPU usage, especially if using a hosting server that limits CPU (e.g. AWS-EC2).

Installation

This package relies on an release candidate version of simplehtmldom, which will be rejected by the latest Laravel versions that require min-stability of dev.

You can run both of these commands to install this package:

composer require simplehtmldom/simplehtmldom:"^2.0@RC"
composer require stuartcusackie/statamic-cache-requester
php please vendor:publish --tag=statamic-cache-requester-config

Check the config file for special features such as queue configuration and lightbox image request generation.

Commands

php artisan requester:entries

If you are using Static caching then it's a good idea to add this command to your deploy script (e.g. Forge). Deployments clear the static cache so this will rebuild it for all entries afterwards. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm

php artisan requester:images

You will usually only run this command once on initial deployment of the site, or after any major restructuring of asset filenames and folders. I do not recommend adding this to your deployment script as images rarely change.

php artisan requester:clear

Clears the configured queue. Be careful if using the default queue or a shared queue as all jobs will be removed.

Queues

This package utilises a 'cacherequester' queue on the default connection. You can update the queue connection and name using the STATAMIC_CACHE_REQUESTER_QUEUE_CONNECTION and STATAMIC_CACHE_REQUESTER_QUEUE_NAME env variables.

Todo

  • Add terms to entry requests
  • Add multisite functionality
  • Experiment with EntryCreated events to process images
  • Remove

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Statamic Cache Requester

Artisan commands that queue up entry and glide urls for retrieval, which engages the caches and makes first time loads much quicker. Note that this package provides no benefict to Statamic applications that save cached images, i.e. cache => true.

This package can do a few things:

  1. Queue up all entry urls for retrieval which automatically engages the static cache, making first time loads quicker. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm
  2. Search for all image and picture sources within your entries and queue them up for a separate retrieval to initiate Glide generation. This means that all images and responsive variants will be pre-generated for your first visitor. This is particularly useful when you have lots of responsive image variants or if you are using Spatie's Statamic Responsive Images package. It can help to avoid server crashes for image heavy websites where Glide has a lot of processing to perform.
  3. Listens for EntrySaved events and automatically queues the entry's url for image requests.

CAUTION: Glide image manipulation can take a lot of work, especially when using responsive image variants and jpeg fallbacks. For example, a site using Spatie's responsive images addon could have 10 sizes and 2 formats per image. If this site has 1000 images then 20,000 variants will need to be manipulated by Glide. Keep an eye on your CPU usage, especially if using a hosting server that limits CPU (e.g. AWS-EC2).

Installation

This package relies on an release candidate version of simplehtmldom, which will be rejected by the latest Laravel versions that require min-stability of dev.

You can run both of these commands to install this package:

composer require simplehtmldom/simplehtmldom:"^2.0@RC"
composer require stuartcusackie/statamic-cache-requester
php please vendor:publish --tag=statamic-cache-requester-config

Check the config file for special features such as queue configuration and lightbox image request generation.

Commands

php artisan requester:entries

If you are using Static caching then it's a good idea to add this command to your deploy script (e.g. Forge). Deployments clear the static cache so this will rebuild it for all entries afterwards. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm

php artisan requester:images

You will usually only run this command once on initial deployment of the site, or after any major restructuring of asset filenames and folders. I do not recommend adding this to your deployment script as images rarely change.

php artisan requester:clear

Clears the configured queue. Be careful if using the default queue or a shared queue as all jobs will be removed.

Queues

This package utilises a 'cacherequester' queue on the default connection. You can update the queue connection and name using the STATAMIC_CACHE_REQUESTER_QUEUE_CONNECTION and STATAMIC_CACHE_REQUESTER_QUEUE_NAME env variables.

Todo

  • Add terms to entry requests
  • Add multisite functionality
  • Experiment with EntryCreated events to process images
  • Remove

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Statamic Cache Requester

Artisan commands that queue up entry and glide urls for retrieval, which engages the caches and makes first time loads much quicker. Note that this package provides no benefict to Statamic applications that save cached images, i.e. cache => true.

This package can do a few things:

  1. Queue up all entry urls for retrieval which automatically engages the static cache, making first time loads quicker. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm
  2. Search for all image and picture sources within your entries and queue them up for a separate retrieval to initiate Glide generation. This means that all images and responsive variants will be pre-generated for your first visitor. This is particularly useful when you have lots of responsive image variants or if you are using Spatie's Statamic Responsive Images package. It can help to avoid server crashes for image heavy websites where Glide has a lot of processing to perform.
  3. Listens for EntrySaved events and automatically queues the entry's url for image requests.

CAUTION: Glide image manipulation can take a lot of work, especially when using responsive image variants and jpeg fallbacks. For example, a site using Spatie's responsive images addon could have 10 sizes and 2 formats per image. If this site has 1000 images then 20,000 variants will need to be manipulated by Glide. Keep an eye on your CPU usage, especially if using a hosting server that limits CPU (e.g. AWS-EC2).

Installation

This package relies on an release candidate version of simplehtmldom, which will be rejected by the latest Laravel versions that require min-stability of dev.

You can run both of these commands to install this package:

composer require simplehtmldom/simplehtmldom:"^2.0@RC"
composer require stuartcusackie/statamic-cache-requester
php please vendor:publish --tag=statamic-cache-requester-config

Check the config file for special features such as queue configuration and lightbox image request generation.

Commands

php artisan requester:entries

If you are using Static caching then it's a good idea to add this command to your deploy script (e.g. Forge). Deployments clear the static cache so this will rebuild it for all entries afterwards. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm

php artisan requester:images

You will usually only run this command once on initial deployment of the site, or after any major restructuring of asset filenames and folders. I do not recommend adding this to your deployment script as images rarely change.

php artisan requester:clear

Clears the configured queue. Be careful if using the default queue or a shared queue as all jobs will be removed.

Queues

This package utilises a 'cacherequester' queue on the default connection. You can update the queue connection and name using the STATAMIC_CACHE_REQUESTER_QUEUE_CONNECTION and STATAMIC_CACHE_REQUESTER_QUEUE_NAME env variables.

Todo

  • Add terms to entry requests
  • Add multisite functionality
  • Experiment with EntryCreated events to process images
  • Remove

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Statamic Cache Requester

Artisan commands that queue up entry and glide urls for retrieval, which engages the caches and makes first time loads much quicker. Note that this package provides no benefict to Statamic applications that save cached images, i.e. cache => true.

This package can do a few things:

  1. Queue up all entry urls for retrieval which automatically engages the static cache, making first time loads quicker. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm
  2. Search for all image and picture sources within your entries and queue them up for a separate retrieval to initiate Glide generation. This means that all images and responsive variants will be pre-generated for your first visitor. This is particularly useful when you have lots of responsive image variants or if you are using Spatie's Statamic Responsive Images package. It can help to avoid server crashes for image heavy websites where Glide has a lot of processing to perform.
  3. Listens for EntrySaved events and automatically queues the entry's url for image requests.

CAUTION: Glide image manipulation can take a lot of work, especially when using responsive image variants and jpeg fallbacks. For example, a site using Spatie's responsive images addon could have 10 sizes and 2 formats per image. If this site has 1000 images then 20,000 variants will need to be manipulated by Glide. Keep an eye on your CPU usage, especially if using a hosting server that limits CPU (e.g. AWS-EC2).

Installation

This package relies on an release candidate version of simplehtmldom, which will be rejected by the latest Laravel versions that require min-stability of dev.

You can run both of these commands to install this package:

composer require simplehtmldom/simplehtmldom:"^2.0@RC"
composer require stuartcusackie/statamic-cache-requester
php please vendor:publish --tag=statamic-cache-requester-config

Check the config file for special features such as queue configuration and lightbox image request generation.

Commands

php artisan requester:entries

If you are using Static caching then it's a good idea to add this command to your deploy script (e.g. Forge). Deployments clear the static cache so this will rebuild it for all entries afterwards. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm

php artisan requester:images

You will usually only run this command once on initial deployment of the site, or after any major restructuring of asset filenames and folders. I do not recommend adding this to your deployment script as images rarely change.

php artisan requester:clear

Clears the configured queue. Be careful if using the default queue or a shared queue as all jobs will be removed.

Queues

This package utilises a 'cacherequester' queue on the default connection. You can update the queue connection and name using the STATAMIC_CACHE_REQUESTER_QUEUE_CONNECTION and STATAMIC_CACHE_REQUESTER_QUEUE_NAME env variables.

Todo

  • Add terms to entry requests
  • Add multisite functionality
  • Experiment with EntryCreated events to process images
  • Remove

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Statamic Cache Requester

Artisan commands that queue up entry and glide urls for retrieval, which engages the caches and makes first time loads much quicker. Note that this package provides no benefict to Statamic applications that save cached images, i.e. cache => true.

This package can do a few things:

  1. Queue up all entry urls for retrieval which automatically engages the static cache, making first time loads quicker. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm
  2. Search for all image and picture sources within your entries and queue them up for a separate retrieval to initiate Glide generation. This means that all images and responsive variants will be pre-generated for your first visitor. This is particularly useful when you have lots of responsive image variants or if you are using Spatie's Statamic Responsive Images package. It can help to avoid server crashes for image heavy websites where Glide has a lot of processing to perform.
  3. Listens for EntrySaved events and automatically queues the entry's url for image requests.

CAUTION: Glide image manipulation can take a lot of work, especially when using responsive image variants and jpeg fallbacks. For example, a site using Spatie's responsive images addon could have 10 sizes and 2 formats per image. If this site has 1000 images then 20,000 variants will need to be manipulated by Glide. Keep an eye on your CPU usage, especially if using a hosting server that limits CPU (e.g. AWS-EC2).

Installation

This package relies on an release candidate version of simplehtmldom, which will be rejected by the latest Laravel versions that require min-stability of dev.

You can run both of these commands to install this package:

composer require simplehtmldom/simplehtmldom:"^2.0@RC"
composer require stuartcusackie/statamic-cache-requester
php please vendor:publish --tag=statamic-cache-requester-config

Check the config file for special features such as queue configuration and lightbox image request generation.

Commands

php artisan requester:entries

If you are using Static caching then it's a good idea to add this command to your deploy script (e.g. Forge). Deployments clear the static cache so this will rebuild it for all entries afterwards. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm

php artisan requester:images

You will usually only run this command once on initial deployment of the site, or after any major restructuring of asset filenames and folders. I do not recommend adding this to your deployment script as images rarely change.

php artisan requester:clear

Clears the configured queue. Be careful if using the default queue or a shared queue as all jobs will be removed.

Queues

This package utilises a 'cacherequester' queue on the default connection. You can update the queue connection and name using the STATAMIC_CACHE_REQUESTER_QUEUE_CONNECTION and STATAMIC_CACHE_REQUESTER_QUEUE_NAME env variables.

Todo

  • Add terms to entry requests
  • Add multisite functionality
  • Experiment with EntryCreated events to process images
  • Remove

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Statamic Cache Requester

Artisan commands that queue up entry and glide urls for retrieval, which engages the caches and makes first time loads much quicker. Note that this package provides no benefict to Statamic applications that save cached images, i.e. cache => true.

This package can do a few things:

  1. Queue up all entry urls for retrieval which automatically engages the static cache, making first time loads quicker. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm
  2. Search for all image and picture sources within your entries and queue them up for a separate retrieval to initiate Glide generation. This means that all images and responsive variants will be pre-generated for your first visitor. This is particularly useful when you have lots of responsive image variants or if you are using Spatie's Statamic Responsive Images package. It can help to avoid server crashes for image heavy websites where Glide has a lot of processing to perform.
  3. Listens for EntrySaved events and automatically queues the entry's url for image requests.

CAUTION: Glide image manipulation can take a lot of work, especially when using responsive image variants and jpeg fallbacks. For example, a site using Spatie's responsive images addon could have 10 sizes and 2 formats per image. If this site has 1000 images then 20,000 variants will need to be manipulated by Glide. Keep an eye on your CPU usage, especially if using a hosting server that limits CPU (e.g. AWS-EC2).

Installation

This package relies on an release candidate version of simplehtmldom, which will be rejected by the latest Laravel versions that require min-stability of dev.

You can run both of these commands to install this package:

composer require simplehtmldom/simplehtmldom:"^2.0@RC"
composer require stuartcusackie/statamic-cache-requester
php please vendor:publish --tag=statamic-cache-requester-config

Check the config file for special features such as queue configuration and lightbox image request generation.

Commands

php artisan requester:entries

If you are using Static caching then it's a good idea to add this command to your deploy script (e.g. Forge). Deployments clear the static cache so this will rebuild it for all entries afterwards. UPDATE: Statamic actually has a built in function for this which should be preferable - static:warm

php artisan requester:images

You will usually only run this command once on initial deployment of the site, or after any major restructuring of asset filenames and folders. I do not recommend adding this to your deployment script as images rarely change.

php artisan requester:clear

Clears the configured queue. Be careful if using the default queue or a shared queue as all jobs will be removed.

Queues

This package utilises a 'cacherequester' queue on the default connection. You can update the queue connection and name using the STATAMIC_CACHE_REQUESTER_QUEUE_CONNECTION and STATAMIC_CACHE_REQUESTER_QUEUE_NAME env variables.

Todo

  • Add terms to entry requests
  • Add multisite functionality
  • Experiment with EntryCreated events to process images
  • Remove

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages