Skip to content

Repository files navigation

Project Impeteus

For local development it's typical to use /etc/hosts to use custom hostnames for projects. Typically it takes a less than 10 milliseconds for the OS to resolve the etc-host entries.

However on macOS/OSX it can take mulitple seconds to resolve certain hostnames specifically ones containing either .local or .dev in the TLD. This repo exists to help diagnose this issue, raise awarness of it, and suggests some simple workarounds.

Running the tests

Requirements

Homebrew

Running the tests

Assuming you are using Homebrew you can clone and test pretty easily. If you use Homebrew'd Apache 2.4 for active development you should double-check the source first, but it's simply:

./setup.sh # run once
./test.sh

Findings

You can check the detailed results but the important findings are:

  • typically macOS resolves /etc/hosts entries in a less than 10ms
  • macOS Sierra has a 5s look-up for .dev and .local entries in /etc/hosts
  • El Captain has a 5s look-up for .local
  • in both cases adding a word between the ip and the hostname like 127.0.0.1 arbitrary test.local cuts that 5s back down to milliseconds

In other words 127.0.0.1 test.local is slow:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 5.003
time_connect: 5.004
time_pretransfer: 5.004
time_starttransfer: 5.004
------------------
time_total: 5.005

but 127.0.0.1 arbitrary test.local is fast:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 arbitrary test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 0.006
time_connect: 0.000
time_pretransfer: 0.000
time_starttransfer: 0.000
------------------
time_total: 0.006

Bonjour and .local

It's a known issue that .local See: https://support.apple.com/en-us/HT203136

Why .dev in Sierra?

What's up with the workaround?

man hosts says:

For each host a single line should be present with the following information: IP_address canonical_hostname [aliases...]

Seemingly .dev and .local are less responsive as canonical-hostnames than as aliases?

Other workarounds

About

Testing the response time of .dev and .local on macOS

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, '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" + '
GitHub - mfdj/dot-local-and-dot-dev: Testing the response time of .dev and .local on macOS · GitHub
Skip to content

Repository files navigation

Project Impeteus

For local development it's typical to use /etc/hosts to use custom hostnames for projects. Typically it takes a less than 10 milliseconds for the OS to resolve the etc-host entries.

However on macOS/OSX it can take mulitple seconds to resolve certain hostnames specifically ones containing either .local or .dev in the TLD. This repo exists to help diagnose this issue, raise awarness of it, and suggests some simple workarounds.

Running the tests

Requirements

Homebrew

Running the tests

Assuming you are using Homebrew you can clone and test pretty easily. If you use Homebrew'd Apache 2.4 for active development you should double-check the source first, but it's simply:

./setup.sh # run once
./test.sh

Findings

You can check the detailed results but the important findings are:

  • typically macOS resolves /etc/hosts entries in a less than 10ms
  • macOS Sierra has a 5s look-up for .dev and .local entries in /etc/hosts
  • El Captain has a 5s look-up for .local
  • in both cases adding a word between the ip and the hostname like 127.0.0.1 arbitrary test.local cuts that 5s back down to milliseconds

In other words 127.0.0.1 test.local is slow:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 5.003
time_connect: 5.004
time_pretransfer: 5.004
time_starttransfer: 5.004
------------------
time_total: 5.005

but 127.0.0.1 arbitrary test.local is fast:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 arbitrary test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 0.006
time_connect: 0.000
time_pretransfer: 0.000
time_starttransfer: 0.000
------------------
time_total: 0.006

Bonjour and .local

It's a known issue that .local See: https://support.apple.com/en-us/HT203136

Why .dev in Sierra?

What's up with the workaround?

man hosts says:

For each host a single line should be present with the following information: IP_address canonical_hostname [aliases...]

Seemingly .dev and .local are less responsive as canonical-hostnames than as aliases?

Other workarounds

About

Testing the response time of .dev and .local on macOS

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, '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('^' + ".*" + ' GitHub - mfdj/dot-local-and-dot-dev: Testing the response time of .dev and .local on macOS · GitHub
Skip to content

Repository files navigation

Project Impeteus

For local development it's typical to use /etc/hosts to use custom hostnames for projects. Typically it takes a less than 10 milliseconds for the OS to resolve the etc-host entries.

However on macOS/OSX it can take mulitple seconds to resolve certain hostnames specifically ones containing either .local or .dev in the TLD. This repo exists to help diagnose this issue, raise awarness of it, and suggests some simple workarounds.

Running the tests

Requirements

Homebrew

Running the tests

Assuming you are using Homebrew you can clone and test pretty easily. If you use Homebrew'd Apache 2.4 for active development you should double-check the source first, but it's simply:

./setup.sh # run once
./test.sh

Findings

You can check the detailed results but the important findings are:

  • typically macOS resolves /etc/hosts entries in a less than 10ms
  • macOS Sierra has a 5s look-up for .dev and .local entries in /etc/hosts
  • El Captain has a 5s look-up for .local
  • in both cases adding a word between the ip and the hostname like 127.0.0.1 arbitrary test.local cuts that 5s back down to milliseconds

In other words 127.0.0.1 test.local is slow:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 5.003
time_connect: 5.004
time_pretransfer: 5.004
time_starttransfer: 5.004
------------------
time_total: 5.005

but 127.0.0.1 arbitrary test.local is fast:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 arbitrary test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 0.006
time_connect: 0.000
time_pretransfer: 0.000
time_starttransfer: 0.000
------------------
time_total: 0.006

Bonjour and .local

It's a known issue that .local See: https://support.apple.com/en-us/HT203136

Why .dev in Sierra?

What's up with the workaround?

man hosts says:

For each host a single line should be present with the following information: IP_address canonical_hostname [aliases...]

Seemingly .dev and .local are less responsive as canonical-hostnames than as aliases?

Other workarounds

About

Testing the response time of .dev and .local on macOS

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, '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('^' + ".*" + ' GitHub - mfdj/dot-local-and-dot-dev: Testing the response time of .dev and .local on macOS · GitHub
Skip to content

Repository files navigation

Project Impeteus

For local development it's typical to use /etc/hosts to use custom hostnames for projects. Typically it takes a less than 10 milliseconds for the OS to resolve the etc-host entries.

However on macOS/OSX it can take mulitple seconds to resolve certain hostnames specifically ones containing either .local or .dev in the TLD. This repo exists to help diagnose this issue, raise awarness of it, and suggests some simple workarounds.

Running the tests

Requirements

Homebrew

Running the tests

Assuming you are using Homebrew you can clone and test pretty easily. If you use Homebrew'd Apache 2.4 for active development you should double-check the source first, but it's simply:

./setup.sh # run once
./test.sh

Findings

You can check the detailed results but the important findings are:

  • typically macOS resolves /etc/hosts entries in a less than 10ms
  • macOS Sierra has a 5s look-up for .dev and .local entries in /etc/hosts
  • El Captain has a 5s look-up for .local
  • in both cases adding a word between the ip and the hostname like 127.0.0.1 arbitrary test.local cuts that 5s back down to milliseconds

In other words 127.0.0.1 test.local is slow:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 5.003
time_connect: 5.004
time_pretransfer: 5.004
time_starttransfer: 5.004
------------------
time_total: 5.005

but 127.0.0.1 arbitrary test.local is fast:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 arbitrary test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 0.006
time_connect: 0.000
time_pretransfer: 0.000
time_starttransfer: 0.000
------------------
time_total: 0.006

Bonjour and .local

It's a known issue that .local See: https://support.apple.com/en-us/HT203136

Why .dev in Sierra?

What's up with the workaround?

man hosts says:

For each host a single line should be present with the following information: IP_address canonical_hostname [aliases...]

Seemingly .dev and .local are less responsive as canonical-hostnames than as aliases?

Other workarounds

About

Testing the response time of .dev and .local on macOS

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, '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" + ' GitHub - mfdj/dot-local-and-dot-dev: Testing the response time of .dev and .local on macOS · GitHub
Skip to content

Repository files navigation

Project Impeteus

For local development it's typical to use /etc/hosts to use custom hostnames for projects. Typically it takes a less than 10 milliseconds for the OS to resolve the etc-host entries.

However on macOS/OSX it can take mulitple seconds to resolve certain hostnames specifically ones containing either .local or .dev in the TLD. This repo exists to help diagnose this issue, raise awarness of it, and suggests some simple workarounds.

Running the tests

Requirements

Homebrew

Running the tests

Assuming you are using Homebrew you can clone and test pretty easily. If you use Homebrew'd Apache 2.4 for active development you should double-check the source first, but it's simply:

./setup.sh # run once
./test.sh

Findings

You can check the detailed results but the important findings are:

  • typically macOS resolves /etc/hosts entries in a less than 10ms
  • macOS Sierra has a 5s look-up for .dev and .local entries in /etc/hosts
  • El Captain has a 5s look-up for .local
  • in both cases adding a word between the ip and the hostname like 127.0.0.1 arbitrary test.local cuts that 5s back down to milliseconds

In other words 127.0.0.1 test.local is slow:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 5.003
time_connect: 5.004
time_pretransfer: 5.004
time_starttransfer: 5.004
------------------
time_total: 5.005

but 127.0.0.1 arbitrary test.local is fast:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 arbitrary test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 0.006
time_connect: 0.000
time_pretransfer: 0.000
time_starttransfer: 0.000
------------------
time_total: 0.006

Bonjour and .local

It's a known issue that .local See: https://support.apple.com/en-us/HT203136

Why .dev in Sierra?

What's up with the workaround?

man hosts says:

For each host a single line should be present with the following information: IP_address canonical_hostname [aliases...]

Seemingly .dev and .local are less responsive as canonical-hostnames than as aliases?

Other workarounds

About

Testing the response time of .dev and .local on macOS

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, '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('^' + ".*" + ' GitHub - mfdj/dot-local-and-dot-dev: Testing the response time of .dev and .local on macOS · GitHub
Skip to content

Repository files navigation

Project Impeteus

For local development it's typical to use /etc/hosts to use custom hostnames for projects. Typically it takes a less than 10 milliseconds for the OS to resolve the etc-host entries.

However on macOS/OSX it can take mulitple seconds to resolve certain hostnames specifically ones containing either .local or .dev in the TLD. This repo exists to help diagnose this issue, raise awarness of it, and suggests some simple workarounds.

Running the tests

Requirements

Homebrew

Running the tests

Assuming you are using Homebrew you can clone and test pretty easily. If you use Homebrew'd Apache 2.4 for active development you should double-check the source first, but it's simply:

./setup.sh # run once
./test.sh

Findings

You can check the detailed results but the important findings are:

  • typically macOS resolves /etc/hosts entries in a less than 10ms
  • macOS Sierra has a 5s look-up for .dev and .local entries in /etc/hosts
  • El Captain has a 5s look-up for .local
  • in both cases adding a word between the ip and the hostname like 127.0.0.1 arbitrary test.local cuts that 5s back down to milliseconds

In other words 127.0.0.1 test.local is slow:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 5.003
time_connect: 5.004
time_pretransfer: 5.004
time_starttransfer: 5.004
------------------
time_total: 5.005

but 127.0.0.1 arbitrary test.local is fast:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 arbitrary test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 0.006
time_connect: 0.000
time_pretransfer: 0.000
time_starttransfer: 0.000
------------------
time_total: 0.006

Bonjour and .local

It's a known issue that .local See: https://support.apple.com/en-us/HT203136

Why .dev in Sierra?

What's up with the workaround?

man hosts says:

For each host a single line should be present with the following information: IP_address canonical_hostname [aliases...]

Seemingly .dev and .local are less responsive as canonical-hostnames than as aliases?

Other workarounds

About

Testing the response time of .dev and .local on macOS

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, '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('^' + ".*" + ' GitHub - mfdj/dot-local-and-dot-dev: Testing the response time of .dev and .local on macOS · GitHub
Skip to content

Repository files navigation

Project Impeteus

For local development it's typical to use /etc/hosts to use custom hostnames for projects. Typically it takes a less than 10 milliseconds for the OS to resolve the etc-host entries.

However on macOS/OSX it can take mulitple seconds to resolve certain hostnames specifically ones containing either .local or .dev in the TLD. This repo exists to help diagnose this issue, raise awarness of it, and suggests some simple workarounds.

Running the tests

Requirements

Homebrew

Running the tests

Assuming you are using Homebrew you can clone and test pretty easily. If you use Homebrew'd Apache 2.4 for active development you should double-check the source first, but it's simply:

./setup.sh # run once
./test.sh

Findings

You can check the detailed results but the important findings are:

  • typically macOS resolves /etc/hosts entries in a less than 10ms
  • macOS Sierra has a 5s look-up for .dev and .local entries in /etc/hosts
  • El Captain has a 5s look-up for .local
  • in both cases adding a word between the ip and the hostname like 127.0.0.1 arbitrary test.local cuts that 5s back down to milliseconds

In other words 127.0.0.1 test.local is slow:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 5.003
time_connect: 5.004
time_pretransfer: 5.004
time_starttransfer: 5.004
------------------
time_total: 5.005

but 127.0.0.1 arbitrary test.local is fast:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 arbitrary test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 0.006
time_connect: 0.000
time_pretransfer: 0.000
time_starttransfer: 0.000
------------------
time_total: 0.006

Bonjour and .local

It's a known issue that .local See: https://support.apple.com/en-us/HT203136

Why .dev in Sierra?

What's up with the workaround?

man hosts says:

For each host a single line should be present with the following information: IP_address canonical_hostname [aliases...]

Seemingly .dev and .local are less responsive as canonical-hostnames than as aliases?

Other workarounds

About

Testing the response time of .dev and .local on macOS

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, '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); } })(); })(); GitHub - mfdj/dot-local-and-dot-dev: Testing the response time of .dev and .local on macOS · GitHub
Skip to content

Repository files navigation

Project Impeteus

For local development it's typical to use /etc/hosts to use custom hostnames for projects. Typically it takes a less than 10 milliseconds for the OS to resolve the etc-host entries.

However on macOS/OSX it can take mulitple seconds to resolve certain hostnames specifically ones containing either .local or .dev in the TLD. This repo exists to help diagnose this issue, raise awarness of it, and suggests some simple workarounds.

Running the tests

Requirements

Homebrew

Running the tests

Assuming you are using Homebrew you can clone and test pretty easily. If you use Homebrew'd Apache 2.4 for active development you should double-check the source first, but it's simply:

./setup.sh # run once
./test.sh

Findings

You can check the detailed results but the important findings are:

  • typically macOS resolves /etc/hosts entries in a less than 10ms
  • macOS Sierra has a 5s look-up for .dev and .local entries in /etc/hosts
  • El Captain has a 5s look-up for .local
  • in both cases adding a word between the ip and the hostname like 127.0.0.1 arbitrary test.local cuts that 5s back down to milliseconds

In other words 127.0.0.1 test.local is slow:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 5.003
time_connect: 5.004
time_pretransfer: 5.004
time_starttransfer: 5.004
------------------
time_total: 5.005

but 127.0.0.1 arbitrary test.local is fast:

$ cat /etc/hosts
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 arbitrary test.local
$ curl -w '@curl-template.txt' -s http://test.local -o /dev/null
time_namelookup: 0.006
time_connect: 0.000
time_pretransfer: 0.000
time_starttransfer: 0.000
------------------
time_total: 0.006

Bonjour and .local

It's a known issue that .local See: https://support.apple.com/en-us/HT203136

Why .dev in Sierra?

What's up with the workaround?

man hosts says:

For each host a single line should be present with the following information: IP_address canonical_hostname [aliases...]

Seemingly .dev and .local are less responsive as canonical-hostnames than as aliases?

Other workarounds

About

Testing the response time of .dev and .local on macOS

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages