Open service 2a02:26f0:3100::1735:2b7a:80 · edge.ricoai.de
2026-01-10 22:04
HTTP/1.1 301 Moved Permanently Location: https://edge.ricoai.de/ Content-Length: 311 Content-Type: text/html; charset=iso-8859-1 Expires: Sat, 10 Jan 2026 22:05:27 GMT Cache-Control: max-age=0, no-cache, no-store Pragma: no-cache Date: Sat, 10 Jan 2026 22:05:27 GMT Connection: close Server-Timing: ak_p; desc="1768082727429_389360502_1593764463_266_5557_80_0_-";dur=1 Page title: 301 Moved Permanently <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="https://edge.ricoai.de/">here</a>.</p> <hr> <address>Apache/2.4.58 (Ubuntu) Server at edge.ricoai.de Port 80</address> </body></html>
Open service 2a02:26f0:3100::1735:2b7a:443 · edge.ricoai.de
2026-01-10 22:04
HTTP/1.1 200 OK
Last-Modified: Fri, 07 Nov 2025 13:11:17 GMT
ETag: "115c-64300eabd2006-gzip"
Content-Type: text/html
Expires: Sat, 10 Jan 2026 22:04:46 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Sat, 10 Jan 2026 22:04:46 GMT
Content-Length: 4444
Connection: close
Alt-Svc: h3=":443"; ma=93600
Server-Timing: ak_p; desc="1768082686614_388358750_1530470905_14206_12206_190_204_-";dur=1
Page title: RicoAI EdgeWorker Counter Demo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RicoAI EdgeWorker Counter Demo</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #eef2f5;
margin: 0;
padding: 0;
color: #333;
}
header {
background-color: #0073aa;
color: white;
padding: 50px 20px;
text-align: center;
}
header h1 {
margin: 0;
font-size: 3rem;
}
header p {
font-size: 1.3rem;
margin-top: 10px;
}
.container {
max-width: 900px;
margin: 50px auto;
background-color: white;
padding: 50px;
border-radius: 12px;
box-shadow: 0 6px 20px rgba(0,0,0,0.1);
}
h2 {
color: #0073aa;
}
p {
line-height: 1.8;
margin-bottom: 25px;
}
.button {
display: inline-block;
padding: 16px 32px;
background-color: #0073aa;
color: white;
text-decoration: none;
border-radius: 8px;
font-weight: bold;
font-size: 1.1rem;
transition: background-color 0.3s;
cursor: pointer;
margin: 10px;
}
.button:hover {
background-color: #005177;
}
footer {
text-align: center;
padding: 25px;
margin-top: 50px;
color: #777;
font-size: 0.9rem;
}
.count {
font-size: 1.2rem;
margin-top: 8px;
font-weight: bold;
transition: color 0.3s;
}
</style>
</head>
<body>
<header>
<h1>RicoAI EdgeWorker Counter Demo</h1>
<p>Click a button — values are stored globally in EdgeWorker memory</p>
</header>
<div class="container">
<h2>Choose an Option</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae risus nec purus dignissim convallis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
<div style="text-align:center;">
<div>
<button class="button" onclick="sendClick('a')">Option A</button>
<div id="count-a" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('b')">Option B</button>
<div id="count-b" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('c')">Option C</button>
<div id="count-c" class="count">Count: 0</div>
</div>
</div>
<div style="text-align:center; margin-top:40px;">
<a class="button" href="https://www.ricoai.de/">Zurück zur Hauptseite</a>
</div>
</div>
<footer>© 2025 RicoAI Demo</footer>
<script>
async function sendClick(button) {
try {
const response = await fetch(`/api/counter`, {
method: "POST",
body: JSON.stringify({ button }),
headers: { "Content-Type": "application/json" }
});
const data = await response.json();
updateCount(button, data.value); // animierter Update
} catch (err) {
console.error("Fehler beim Senden:", err);
}
}
async function loadCounts() {
for (const btn of ["a", "b", "c"]) {
try {
const response = await fetch(`/api/counter?button=${btn}`);
const data = await response.json();
updateCount(btn, data.value, false); // ohne Animation beim initialen Laden
} catch (err) {
console.error("Fehler beim Laden:", err);
}
}
}
// Funktion zum animierten Zähler-Update
function updateCount(button, value, animate = true) {
const el = document.getElementById(`count-${button}`);
if (!el) return
Open service 2a02:26f0:3100::1725:e262:443 · edge.ricoai.de
2026-01-10 22:04
HTTP/1.1 200 OK
Last-Modified: Fri, 07 Nov 2025 13:11:17 GMT
ETag: "115c-64300eabd2006-gzip"
Content-Type: text/html
Expires: Sat, 10 Jan 2026 22:04:45 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Sat, 10 Jan 2026 22:04:45 GMT
Content-Length: 4444
Connection: close
Alt-Svc: h3=":443"; ma=93600
Server-Timing: ak_p; desc="1768082685871_389360502_1593718029_443_4529_12_14_-";dur=1
Page title: RicoAI EdgeWorker Counter Demo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RicoAI EdgeWorker Counter Demo</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #eef2f5;
margin: 0;
padding: 0;
color: #333;
}
header {
background-color: #0073aa;
color: white;
padding: 50px 20px;
text-align: center;
}
header h1 {
margin: 0;
font-size: 3rem;
}
header p {
font-size: 1.3rem;
margin-top: 10px;
}
.container {
max-width: 900px;
margin: 50px auto;
background-color: white;
padding: 50px;
border-radius: 12px;
box-shadow: 0 6px 20px rgba(0,0,0,0.1);
}
h2 {
color: #0073aa;
}
p {
line-height: 1.8;
margin-bottom: 25px;
}
.button {
display: inline-block;
padding: 16px 32px;
background-color: #0073aa;
color: white;
text-decoration: none;
border-radius: 8px;
font-weight: bold;
font-size: 1.1rem;
transition: background-color 0.3s;
cursor: pointer;
margin: 10px;
}
.button:hover {
background-color: #005177;
}
footer {
text-align: center;
padding: 25px;
margin-top: 50px;
color: #777;
font-size: 0.9rem;
}
.count {
font-size: 1.2rem;
margin-top: 8px;
font-weight: bold;
transition: color 0.3s;
}
</style>
</head>
<body>
<header>
<h1>RicoAI EdgeWorker Counter Demo</h1>
<p>Click a button — values are stored globally in EdgeWorker memory</p>
</header>
<div class="container">
<h2>Choose an Option</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae risus nec purus dignissim convallis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
<div style="text-align:center;">
<div>
<button class="button" onclick="sendClick('a')">Option A</button>
<div id="count-a" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('b')">Option B</button>
<div id="count-b" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('c')">Option C</button>
<div id="count-c" class="count">Count: 0</div>
</div>
</div>
<div style="text-align:center; margin-top:40px;">
<a class="button" href="https://www.ricoai.de/">Zurück zur Hauptseite</a>
</div>
</div>
<footer>© 2025 RicoAI Demo</footer>
<script>
async function sendClick(button) {
try {
const response = await fetch(`/api/counter`, {
method: "POST",
body: JSON.stringify({ button }),
headers: { "Content-Type": "application/json" }
});
const data = await response.json();
updateCount(button, data.value); // animierter Update
} catch (err) {
console.error("Fehler beim Senden:", err);
}
}
async function loadCounts() {
for (const btn of ["a", "b", "c"]) {
try {
const response = await fetch(`/api/counter?button=${btn}`);
const data = await response.json();
updateCount(btn, data.value, false); // ohne Animation beim initialen Laden
} catch (err) {
console.error("Fehler beim Laden:", err);
}
}
}
// Funktion zum animierten Zähler-Update
function updateCount(button, value, animate = true) {
const el = document.getElementById(`count-${button}`);
if (!el) return
Open service 2.16.204.145:80 · edge.ricoai.de
2026-01-10 22:04
HTTP/1.1 301 Moved Permanently Location: https://edge.ricoai.de/ Content-Length: 311 Content-Type: text/html; charset=iso-8859-1 Expires: Sat, 10 Jan 2026 22:05:26 GMT Cache-Control: max-age=0, no-cache, no-store Pragma: no-cache Date: Sat, 10 Jan 2026 22:05:26 GMT Connection: close Server-Timing: ak_p; desc="1768082726815_34610577_3518251091_3433_4600_15_0_-";dur=1 Page title: 301 Moved Permanently <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="https://edge.ricoai.de/">here</a>.</p> <hr> <address>Apache/2.4.58 (Ubuntu) Server at edge.ricoai.de Port 80</address> </body></html>
Open service 2.16.204.150:443 · edge.ricoai.de
2026-01-10 22:04
HTTP/1.1 200 OK
Last-Modified: Fri, 07 Nov 2025 13:11:17 GMT
ETag: "115c-64300eabd2006-gzip"
Content-Type: text/html
Expires: Sat, 10 Jan 2026 22:04:46 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Sat, 10 Jan 2026 22:04:46 GMT
Content-Length: 4444
Connection: close
Alt-Svc: h3=":443"; ma=93600
Server-Timing: ak_p; desc="1768082686080_34610582_3208775755_19318_41150_11_33_-";dur=1
Page title: RicoAI EdgeWorker Counter Demo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RicoAI EdgeWorker Counter Demo</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #eef2f5;
margin: 0;
padding: 0;
color: #333;
}
header {
background-color: #0073aa;
color: white;
padding: 50px 20px;
text-align: center;
}
header h1 {
margin: 0;
font-size: 3rem;
}
header p {
font-size: 1.3rem;
margin-top: 10px;
}
.container {
max-width: 900px;
margin: 50px auto;
background-color: white;
padding: 50px;
border-radius: 12px;
box-shadow: 0 6px 20px rgba(0,0,0,0.1);
}
h2 {
color: #0073aa;
}
p {
line-height: 1.8;
margin-bottom: 25px;
}
.button {
display: inline-block;
padding: 16px 32px;
background-color: #0073aa;
color: white;
text-decoration: none;
border-radius: 8px;
font-weight: bold;
font-size: 1.1rem;
transition: background-color 0.3s;
cursor: pointer;
margin: 10px;
}
.button:hover {
background-color: #005177;
}
footer {
text-align: center;
padding: 25px;
margin-top: 50px;
color: #777;
font-size: 0.9rem;
}
.count {
font-size: 1.2rem;
margin-top: 8px;
font-weight: bold;
transition: color 0.3s;
}
</style>
</head>
<body>
<header>
<h1>RicoAI EdgeWorker Counter Demo</h1>
<p>Click a button — values are stored globally in EdgeWorker memory</p>
</header>
<div class="container">
<h2>Choose an Option</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae risus nec purus dignissim convallis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
<div style="text-align:center;">
<div>
<button class="button" onclick="sendClick('a')">Option A</button>
<div id="count-a" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('b')">Option B</button>
<div id="count-b" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('c')">Option C</button>
<div id="count-c" class="count">Count: 0</div>
</div>
</div>
<div style="text-align:center; margin-top:40px;">
<a class="button" href="https://www.ricoai.de/">Zurück zur Hauptseite</a>
</div>
</div>
<footer>© 2025 RicoAI Demo</footer>
<script>
async function sendClick(button) {
try {
const response = await fetch(`/api/counter`, {
method: "POST",
body: JSON.stringify({ button }),
headers: { "Content-Type": "application/json" }
});
const data = await response.json();
updateCount(button, data.value); // animierter Update
} catch (err) {
console.error("Fehler beim Senden:", err);
}
}
async function loadCounts() {
for (const btn of ["a", "b", "c"]) {
try {
const response = await fetch(`/api/counter?button=${btn}`);
const data = await response.json();
updateCount(btn, data.value, false); // ohne Animation beim initialen Laden
} catch (err) {
console.error("Fehler beim Laden:", err);
}
}
}
// Funktion zum animierten Zähler-Update
function updateCount(button, value, animate = true) {
const el = document.getElementById(`count-${button}`);
if (!el) return
Open service 2a02:26f0:3100::1725:e262:80 · edge.ricoai.de
2026-01-10 22:04
HTTP/1.1 301 Moved Permanently Location: https://edge.ricoai.de/ Content-Length: 311 Content-Type: text/html; charset=iso-8859-1 Expires: Sat, 10 Jan 2026 22:05:26 GMT Cache-Control: max-age=0, no-cache, no-store Pragma: no-cache Date: Sat, 10 Jan 2026 22:05:26 GMT Connection: close Server-Timing: ak_p; desc="1768082726873_388358750_1530492678_300_5522_148_0_-";dur=1 Page title: 301 Moved Permanently <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="https://edge.ricoai.de/">here</a>.</p> <hr> <address>Apache/2.4.58 (Ubuntu) Server at edge.ricoai.de Port 80</address> </body></html>
Open service 2.16.204.150:80 · edge.ricoai.de
2026-01-10 22:04
HTTP/1.1 301 Moved Permanently Location: https://edge.ricoai.de/ Content-Length: 311 Content-Type: text/html; charset=iso-8859-1 Expires: Sat, 10 Jan 2026 22:05:26 GMT Cache-Control: max-age=0, no-cache, no-store Pragma: no-cache Date: Sat, 10 Jan 2026 22:05:26 GMT Connection: close Server-Timing: ak_p; desc="1768082726735_34610582_3208837142_1803_4372_12_0_-";dur=1 Page title: 301 Moved Permanently <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="https://edge.ricoai.de/">here</a>.</p> <hr> <address>Apache/2.4.58 (Ubuntu) Server at edge.ricoai.de Port 80</address> </body></html>
Open service 2.16.204.145:443 · edge.ricoai.de
2026-01-10 22:04
HTTP/1.1 200 OK
Last-Modified: Fri, 07 Nov 2025 13:11:17 GMT
ETag: "115c-64300eabd2006-gzip"
Content-Type: text/html
Expires: Sat, 10 Jan 2026 22:04:46 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Sat, 10 Jan 2026 22:04:46 GMT
Content-Length: 4444
Connection: close
Alt-Svc: h3=":443"; ma=93600
Server-Timing: ak_p; desc="1768082686218_34610577_3518189805_1113_4540_88_102_-";dur=1
Page title: RicoAI EdgeWorker Counter Demo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RicoAI EdgeWorker Counter Demo</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #eef2f5;
margin: 0;
padding: 0;
color: #333;
}
header {
background-color: #0073aa;
color: white;
padding: 50px 20px;
text-align: center;
}
header h1 {
margin: 0;
font-size: 3rem;
}
header p {
font-size: 1.3rem;
margin-top: 10px;
}
.container {
max-width: 900px;
margin: 50px auto;
background-color: white;
padding: 50px;
border-radius: 12px;
box-shadow: 0 6px 20px rgba(0,0,0,0.1);
}
h2 {
color: #0073aa;
}
p {
line-height: 1.8;
margin-bottom: 25px;
}
.button {
display: inline-block;
padding: 16px 32px;
background-color: #0073aa;
color: white;
text-decoration: none;
border-radius: 8px;
font-weight: bold;
font-size: 1.1rem;
transition: background-color 0.3s;
cursor: pointer;
margin: 10px;
}
.button:hover {
background-color: #005177;
}
footer {
text-align: center;
padding: 25px;
margin-top: 50px;
color: #777;
font-size: 0.9rem;
}
.count {
font-size: 1.2rem;
margin-top: 8px;
font-weight: bold;
transition: color 0.3s;
}
</style>
</head>
<body>
<header>
<h1>RicoAI EdgeWorker Counter Demo</h1>
<p>Click a button — values are stored globally in EdgeWorker memory</p>
</header>
<div class="container">
<h2>Choose an Option</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae risus nec purus dignissim convallis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
<div style="text-align:center;">
<div>
<button class="button" onclick="sendClick('a')">Option A</button>
<div id="count-a" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('b')">Option B</button>
<div id="count-b" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('c')">Option C</button>
<div id="count-c" class="count">Count: 0</div>
</div>
</div>
<div style="text-align:center; margin-top:40px;">
<a class="button" href="https://www.ricoai.de/">Zurück zur Hauptseite</a>
</div>
</div>
<footer>© 2025 RicoAI Demo</footer>
<script>
async function sendClick(button) {
try {
const response = await fetch(`/api/counter`, {
method: "POST",
body: JSON.stringify({ button }),
headers: { "Content-Type": "application/json" }
});
const data = await response.json();
updateCount(button, data.value); // animierter Update
} catch (err) {
console.error("Fehler beim Senden:", err);
}
}
async function loadCounts() {
for (const btn of ["a", "b", "c"]) {
try {
const response = await fetch(`/api/counter?button=${btn}`);
const data = await response.json();
updateCount(btn, data.value, false); // ohne Animation beim initialen Laden
} catch (err) {
console.error("Fehler beim Laden:", err);
}
}
}
// Funktion zum animierten Zähler-Update
function updateCount(button, value, animate = true) {
const el = document.getElementById(`count-${button}`);
if (!el) return
Open service 2a02:26f0:3500:14::1724:a24e:443 · edge.ricoai.de
2026-01-04 20:07
HTTP/1.1 200 OK
Last-Modified: Fri, 07 Nov 2025 13:11:17 GMT
ETag: "115c-64300eabd2006-gzip"
Content-Type: text/html
Expires: Sun, 04 Jan 2026 20:07:37 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Sun, 04 Jan 2026 20:07:37 GMT
Content-Length: 4444
Connection: close
Alt-Svc: h3=":443"; ma=93600
Server-Timing: ak_p; desc="1767557257181_388276231_2442005601_674_3849_147_171_-";dur=1
Page title: RicoAI EdgeWorker Counter Demo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RicoAI EdgeWorker Counter Demo</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #eef2f5;
margin: 0;
padding: 0;
color: #333;
}
header {
background-color: #0073aa;
color: white;
padding: 50px 20px;
text-align: center;
}
header h1 {
margin: 0;
font-size: 3rem;
}
header p {
font-size: 1.3rem;
margin-top: 10px;
}
.container {
max-width: 900px;
margin: 50px auto;
background-color: white;
padding: 50px;
border-radius: 12px;
box-shadow: 0 6px 20px rgba(0,0,0,0.1);
}
h2 {
color: #0073aa;
}
p {
line-height: 1.8;
margin-bottom: 25px;
}
.button {
display: inline-block;
padding: 16px 32px;
background-color: #0073aa;
color: white;
text-decoration: none;
border-radius: 8px;
font-weight: bold;
font-size: 1.1rem;
transition: background-color 0.3s;
cursor: pointer;
margin: 10px;
}
.button:hover {
background-color: #005177;
}
footer {
text-align: center;
padding: 25px;
margin-top: 50px;
color: #777;
font-size: 0.9rem;
}
.count {
font-size: 1.2rem;
margin-top: 8px;
font-weight: bold;
transition: color 0.3s;
}
</style>
</head>
<body>
<header>
<h1>RicoAI EdgeWorker Counter Demo</h1>
<p>Click a button — values are stored globally in EdgeWorker memory</p>
</header>
<div class="container">
<h2>Choose an Option</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae risus nec purus dignissim convallis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
<div style="text-align:center;">
<div>
<button class="button" onclick="sendClick('a')">Option A</button>
<div id="count-a" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('b')">Option B</button>
<div id="count-b" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('c')">Option C</button>
<div id="count-c" class="count">Count: 0</div>
</div>
</div>
<div style="text-align:center; margin-top:40px;">
<a class="button" href="https://www.ricoai.de/">Zurück zur Hauptseite</a>
</div>
</div>
<footer>© 2025 RicoAI Demo</footer>
<script>
async function sendClick(button) {
try {
const response = await fetch(`/api/counter`, {
method: "POST",
body: JSON.stringify({ button }),
headers: { "Content-Type": "application/json" }
});
const data = await response.json();
updateCount(button, data.value); // animierter Update
} catch (err) {
console.error("Fehler beim Senden:", err);
}
}
async function loadCounts() {
for (const btn of ["a", "b", "c"]) {
try {
const response = await fetch(`/api/counter?button=${btn}`);
const data = await response.json();
updateCount(btn, data.value, false); // ohne Animation beim initialen Laden
} catch (err) {
console.error("Fehler beim Laden:", err);
}
}
}
// Funktion zum animierten Zähler-Update
function updateCount(button, value, animate = true) {
const el = document.getElementById(`count-${button}`);
if (!el) return
Open service 2a02:26f0:3500:14::1724:a24e:80 · edge.ricoai.de
2026-01-04 20:07
HTTP/1.1 301 Moved Permanently Location: https://edge.ricoai.de/ Content-Length: 311 Content-Type: text/html; charset=iso-8859-1 Expires: Sun, 04 Jan 2026 20:07:40 GMT Cache-Control: max-age=0, no-cache, no-store Pragma: no-cache Date: Sun, 04 Jan 2026 20:07:40 GMT Connection: close Server-Timing: ak_p; desc="1767557260063_388276238_2543739521_1450_4846_154_0_-";dur=1 Page title: 301 Moved Permanently <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="https://edge.ricoai.de/">here</a>.</p> <hr> <address>Apache/2.4.58 (Ubuntu) Server at edge.ricoai.de Port 80</address> </body></html>
Open service 2.16.204.145:80 · edge.ricoai.de
2026-01-04 20:07
HTTP/1.1 301 Moved Permanently Location: https://edge.ricoai.de/ Content-Length: 311 Content-Type: text/html; charset=iso-8859-1 Expires: Sun, 04 Jan 2026 20:07:40 GMT Cache-Control: max-age=0, no-cache, no-store Pragma: no-cache Date: Sun, 04 Jan 2026 20:07:40 GMT Connection: close Server-Timing: ak_p; desc="1767557260059_34610577_2729562849_1230_3614_152_0_-";dur=1 Page title: 301 Moved Permanently <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="https://edge.ricoai.de/">here</a>.</p> <hr> <address>Apache/2.4.58 (Ubuntu) Server at edge.ricoai.de Port 80</address> </body></html>
Open service 2.16.204.150:443 · edge.ricoai.de
2026-01-04 20:07
HTTP/1.1 200 OK
Last-Modified: Fri, 07 Nov 2025 13:11:17 GMT
ETag: "115c-64300eabd2006-gzip"
Content-Type: text/html
Expires: Sun, 04 Jan 2026 20:07:36 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Sun, 04 Jan 2026 20:07:36 GMT
Content-Length: 4444
Connection: close
Alt-Svc: h3=":443"; ma=93600
Server-Timing: ak_p; desc="1767557256767_34610577_2729557240_880_3999_17_36_-";dur=1
Page title: RicoAI EdgeWorker Counter Demo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RicoAI EdgeWorker Counter Demo</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #eef2f5;
margin: 0;
padding: 0;
color: #333;
}
header {
background-color: #0073aa;
color: white;
padding: 50px 20px;
text-align: center;
}
header h1 {
margin: 0;
font-size: 3rem;
}
header p {
font-size: 1.3rem;
margin-top: 10px;
}
.container {
max-width: 900px;
margin: 50px auto;
background-color: white;
padding: 50px;
border-radius: 12px;
box-shadow: 0 6px 20px rgba(0,0,0,0.1);
}
h2 {
color: #0073aa;
}
p {
line-height: 1.8;
margin-bottom: 25px;
}
.button {
display: inline-block;
padding: 16px 32px;
background-color: #0073aa;
color: white;
text-decoration: none;
border-radius: 8px;
font-weight: bold;
font-size: 1.1rem;
transition: background-color 0.3s;
cursor: pointer;
margin: 10px;
}
.button:hover {
background-color: #005177;
}
footer {
text-align: center;
padding: 25px;
margin-top: 50px;
color: #777;
font-size: 0.9rem;
}
.count {
font-size: 1.2rem;
margin-top: 8px;
font-weight: bold;
transition: color 0.3s;
}
</style>
</head>
<body>
<header>
<h1>RicoAI EdgeWorker Counter Demo</h1>
<p>Click a button — values are stored globally in EdgeWorker memory</p>
</header>
<div class="container">
<h2>Choose an Option</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae risus nec purus dignissim convallis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
<div style="text-align:center;">
<div>
<button class="button" onclick="sendClick('a')">Option A</button>
<div id="count-a" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('b')">Option B</button>
<div id="count-b" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('c')">Option C</button>
<div id="count-c" class="count">Count: 0</div>
</div>
</div>
<div style="text-align:center; margin-top:40px;">
<a class="button" href="https://www.ricoai.de/">Zurück zur Hauptseite</a>
</div>
</div>
<footer>© 2025 RicoAI Demo</footer>
<script>
async function sendClick(button) {
try {
const response = await fetch(`/api/counter`, {
method: "POST",
body: JSON.stringify({ button }),
headers: { "Content-Type": "application/json" }
});
const data = await response.json();
updateCount(button, data.value); // animierter Update
} catch (err) {
console.error("Fehler beim Senden:", err);
}
}
async function loadCounts() {
for (const btn of ["a", "b", "c"]) {
try {
const response = await fetch(`/api/counter?button=${btn}`);
const data = await response.json();
updateCount(btn, data.value, false); // ohne Animation beim initialen Laden
} catch (err) {
console.error("Fehler beim Laden:", err);
}
}
}
// Funktion zum animierten Zähler-Update
function updateCount(button, value, animate = true) {
const el = document.getElementById(`count-${button}`);
if (!el) return
Open service 2.16.204.150:80 · edge.ricoai.de
2026-01-04 20:07
HTTP/1.1 301 Moved Permanently Location: https://edge.ricoai.de/ Content-Length: 311 Content-Type: text/html; charset=iso-8859-1 Expires: Sun, 04 Jan 2026 20:07:36 GMT Cache-Control: max-age=0, no-cache, no-store Pragma: no-cache Date: Sun, 04 Jan 2026 20:07:36 GMT Connection: close Server-Timing: ak_p; desc="1767557256766_34610582_2422836216_1028_3878_11_0_-";dur=1 Page title: 301 Moved Permanently <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="https://edge.ricoai.de/">here</a>.</p> <hr> <address>Apache/2.4.58 (Ubuntu) Server at edge.ricoai.de Port 80</address> </body></html>
Open service 2a02:26f0:3500:14::1724:a249:443 · edge.ricoai.de
2026-01-04 20:07
HTTP/1.1 200 OK
Last-Modified: Fri, 07 Nov 2025 13:11:17 GMT
ETag: "115c-64300eabd2006-gzip"
Content-Type: text/html
Expires: Sun, 04 Jan 2026 20:07:36 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Sun, 04 Jan 2026 20:07:36 GMT
Content-Length: 4444
Connection: close
Alt-Svc: h3=":443"; ma=93600
Server-Timing: ak_p; desc="1767557256377_388276231_2442003141_230_3928_14_16_-";dur=1
Page title: RicoAI EdgeWorker Counter Demo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RicoAI EdgeWorker Counter Demo</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #eef2f5;
margin: 0;
padding: 0;
color: #333;
}
header {
background-color: #0073aa;
color: white;
padding: 50px 20px;
text-align: center;
}
header h1 {
margin: 0;
font-size: 3rem;
}
header p {
font-size: 1.3rem;
margin-top: 10px;
}
.container {
max-width: 900px;
margin: 50px auto;
background-color: white;
padding: 50px;
border-radius: 12px;
box-shadow: 0 6px 20px rgba(0,0,0,0.1);
}
h2 {
color: #0073aa;
}
p {
line-height: 1.8;
margin-bottom: 25px;
}
.button {
display: inline-block;
padding: 16px 32px;
background-color: #0073aa;
color: white;
text-decoration: none;
border-radius: 8px;
font-weight: bold;
font-size: 1.1rem;
transition: background-color 0.3s;
cursor: pointer;
margin: 10px;
}
.button:hover {
background-color: #005177;
}
footer {
text-align: center;
padding: 25px;
margin-top: 50px;
color: #777;
font-size: 0.9rem;
}
.count {
font-size: 1.2rem;
margin-top: 8px;
font-weight: bold;
transition: color 0.3s;
}
</style>
</head>
<body>
<header>
<h1>RicoAI EdgeWorker Counter Demo</h1>
<p>Click a button — values are stored globally in EdgeWorker memory</p>
</header>
<div class="container">
<h2>Choose an Option</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae risus nec purus dignissim convallis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
<div style="text-align:center;">
<div>
<button class="button" onclick="sendClick('a')">Option A</button>
<div id="count-a" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('b')">Option B</button>
<div id="count-b" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('c')">Option C</button>
<div id="count-c" class="count">Count: 0</div>
</div>
</div>
<div style="text-align:center; margin-top:40px;">
<a class="button" href="https://www.ricoai.de/">Zurück zur Hauptseite</a>
</div>
</div>
<footer>© 2025 RicoAI Demo</footer>
<script>
async function sendClick(button) {
try {
const response = await fetch(`/api/counter`, {
method: "POST",
body: JSON.stringify({ button }),
headers: { "Content-Type": "application/json" }
});
const data = await response.json();
updateCount(button, data.value); // animierter Update
} catch (err) {
console.error("Fehler beim Senden:", err);
}
}
async function loadCounts() {
for (const btn of ["a", "b", "c"]) {
try {
const response = await fetch(`/api/counter?button=${btn}`);
const data = await response.json();
updateCount(btn, data.value, false); // ohne Animation beim initialen Laden
} catch (err) {
console.error("Fehler beim Laden:", err);
}
}
}
// Funktion zum animierten Zähler-Update
function updateCount(button, value, animate = true) {
const el = document.getElementById(`count-${button}`);
if (!el) return
Open service 2a02:26f0:3500:14::1724:a249:80 · edge.ricoai.de
2026-01-04 20:07
HTTP/1.1 301 Moved Permanently Location: https://edge.ricoai.de/ Content-Length: 311 Content-Type: text/html; charset=iso-8859-1 Expires: Sun, 04 Jan 2026 20:07:39 GMT Cache-Control: max-age=0, no-cache, no-store Pragma: no-cache Date: Sun, 04 Jan 2026 20:07:39 GMT Connection: close Server-Timing: ak_p; desc="1767557259311_388276233_2133768096_154_3337_30_0_-";dur=1 Page title: 301 Moved Permanently <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="https://edge.ricoai.de/">here</a>.</p> <hr> <address>Apache/2.4.58 (Ubuntu) Server at edge.ricoai.de Port 80</address> </body></html>
Open service 2.16.204.145:443 · edge.ricoai.de
2026-01-04 20:07
HTTP/1.1 200 OK
Last-Modified: Fri, 07 Nov 2025 13:11:17 GMT
ETag: "115c-64300eabd2006-gzip"
Content-Type: text/html
Expires: Sun, 04 Jan 2026 20:07:36 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Sun, 04 Jan 2026 20:07:36 GMT
Content-Length: 4444
Connection: close
Alt-Svc: h3=":443"; ma=93600
Server-Timing: ak_p; desc="1767557256786_34610577_2729557235_2563_4259_11_13_-";dur=1
Page title: RicoAI EdgeWorker Counter Demo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RicoAI EdgeWorker Counter Demo</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #eef2f5;
margin: 0;
padding: 0;
color: #333;
}
header {
background-color: #0073aa;
color: white;
padding: 50px 20px;
text-align: center;
}
header h1 {
margin: 0;
font-size: 3rem;
}
header p {
font-size: 1.3rem;
margin-top: 10px;
}
.container {
max-width: 900px;
margin: 50px auto;
background-color: white;
padding: 50px;
border-radius: 12px;
box-shadow: 0 6px 20px rgba(0,0,0,0.1);
}
h2 {
color: #0073aa;
}
p {
line-height: 1.8;
margin-bottom: 25px;
}
.button {
display: inline-block;
padding: 16px 32px;
background-color: #0073aa;
color: white;
text-decoration: none;
border-radius: 8px;
font-weight: bold;
font-size: 1.1rem;
transition: background-color 0.3s;
cursor: pointer;
margin: 10px;
}
.button:hover {
background-color: #005177;
}
footer {
text-align: center;
padding: 25px;
margin-top: 50px;
color: #777;
font-size: 0.9rem;
}
.count {
font-size: 1.2rem;
margin-top: 8px;
font-weight: bold;
transition: color 0.3s;
}
</style>
</head>
<body>
<header>
<h1>RicoAI EdgeWorker Counter Demo</h1>
<p>Click a button — values are stored globally in EdgeWorker memory</p>
</header>
<div class="container">
<h2>Choose an Option</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae risus nec purus dignissim convallis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
<div style="text-align:center;">
<div>
<button class="button" onclick="sendClick('a')">Option A</button>
<div id="count-a" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('b')">Option B</button>
<div id="count-b" class="count">Count: 0</div>
</div>
<div>
<button class="button" onclick="sendClick('c')">Option C</button>
<div id="count-c" class="count">Count: 0</div>
</div>
</div>
<div style="text-align:center; margin-top:40px;">
<a class="button" href="https://www.ricoai.de/">Zurück zur Hauptseite</a>
</div>
</div>
<footer>© 2025 RicoAI Demo</footer>
<script>
async function sendClick(button) {
try {
const response = await fetch(`/api/counter`, {
method: "POST",
body: JSON.stringify({ button }),
headers: { "Content-Type": "application/json" }
});
const data = await response.json();
updateCount(button, data.value); // animierter Update
} catch (err) {
console.error("Fehler beim Senden:", err);
}
}
async function loadCounts() {
for (const btn of ["a", "b", "c"]) {
try {
const response = await fetch(`/api/counter?button=${btn}`);
const data = await response.json();
updateCount(btn, data.value, false); // ohne Animation beim initialen Laden
} catch (err) {
console.error("Fehler beim Laden:", err);
}
}
}
// Funktion zum animierten Zähler-Update
function updateCount(button, value, animate = true) {
const el = document.getElementById(`count-${button}`);
if (!el) return