Backup database and code changes - 2025-06-08 18:36:00

This commit is contained in:
root
2025-06-08 18:36:00 +00:00
parent ba54427b2b
commit 4eae8538c8
28 changed files with 1030 additions and 44 deletions

View File

@@ -26,7 +26,11 @@
"Bash(then echo \"✓ $file - EXISTS\")",
"Bash(else echo \"✗ $file - MISSING\")",
"Bash(fi)",
"Bash(done)"
"Bash(done)",
"Bash(sudo apt-get:*)",
"Bash(sudo apt-get install:*)",
"Bash(npm install:*)",
"Bash(terser:*)"
],
"deny": []
}

105
.htaccess
View File

@@ -26,14 +26,109 @@
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
# Basic compression (if mod_deflate is available)
# Enhanced Gzip compression
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
# Enable compression for all text-based files
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
AddOutputFilterByType DEFLATE application/javascript application/x-javascript
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/rss+xml
AddOutputFilterByType DEFLATE application/json application/ld+json
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE font/ttf font/otf font/eot font/woff font/woff2
# Remove browser bugs for older browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
# Enable Brotli compression if available
<IfModule mod_brotli.c>
AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css text/javascript
AddOutputFilterByType BROTLI_COMPRESS application/javascript application/x-javascript
AddOutputFilterByType BROTLI_COMPRESS application/xml application/xhtml+xml application/rss+xml
AddOutputFilterByType BROTLI_COMPRESS application/json application/ld+json
AddOutputFilterByType BROTLI_COMPRESS image/svg+xml
AddOutputFilterByType BROTLI_COMPRESS font/ttf font/otf font/woff font/woff2
</IfModule>
# Browser Caching Headers
<IfModule mod_expires.c>
ExpiresActive On
# Images - 1 year
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/ico "access plus 1 year"
# Fonts - 1 year
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/otf "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/font-woff2 "access plus 1 year"
# CSS and JavaScript - 1 month
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
# HTML and PHP - 1 hour
ExpiresByType text/html "access plus 1 hour"
ExpiresByType application/xhtml+xml "access plus 1 hour"
# Data - no cache
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Default - 1 week
ExpiresDefault "access plus 1 week"
</IfModule>
# Cache-Control Headers
<IfModule mod_headers.c>
# Static assets - 1 year
<FilesMatch "\.(jpg|jpeg|png|gif|webp|svg|ico|woff|woff2|ttf|otf|eot)$">
Header set Cache-Control "max-age=31536000, public, immutable"
</FilesMatch>
# CSS and JS - 1 month
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
# HTML/PHP - 1 hour
<FilesMatch "\.(html|php)$">
Header set Cache-Control "max-age=3600, public, must-revalidate"
</FilesMatch>
# Keep-alive
Header set Connection keep-alive
</IfModule>
# HTTP/2 Server Push
<IfModule mod_http2.c>
# Push critical resources
<FilesMatch "index\.php">
Header add Link "</assets/css/main.min.css>; rel=preload; as=style"
Header add Link "</assets/images/ukds-main-logo.webp>; rel=preload; as=image"
Header add Link "</assets/js/main.min.js>; rel=preload; as=script"
</FilesMatch>
</IfModule>
# ETags
FileETag None
Header unset ETag
# Disable directory browsing
Options -Indexes

View File

@@ -199,7 +199,7 @@ $canonical_url = "https://ukdataservices.co.uk/about.php";
<main id="main-content">
<section class="about-hero">
<div class="container">
<h1>About UK Data Services</h1>
<h1>About UK Data Services - Expert Web Scraping & Business Intelligence</h1>
<p>Your trusted partner for professional data solutions since 2018</p>
</div>
</section>

1
assets/css/main.min.css vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 964 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -736,4 +736,75 @@ document.addEventListener('DOMContentLoaded', function() {
console.log(`Blog pagination initialized: ${totalPages} pages, ${allArticles.length} articles`);
}
// Viewport-based Image Loading Optimization
function initializeViewportImageLoading() {
// Intersection Observer for lazy loading optimization
const imageObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
// Load high-quality version when in viewport
if (img.dataset.src) {
img.src = img.dataset.src;
img.removeAttribute('data-src');
}
// Load WebP for supported browsers
if (img.dataset.webp && supportsWebP()) {
img.src = img.dataset.webp;
}
observer.unobserve(img);
}
});
}, {
rootMargin: '50px 0px',
threshold: 0.01
});
// Observe all images with data-src
document.querySelectorAll('img[data-src]').forEach(img => {
imageObserver.observe(img);
});
// WebP support detection
function supportsWebP() {
return new Promise(resolve => {
const webP = new Image();
webP.onload = webP.onerror = () => resolve(webP.height === 2);
webP.src = 'data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA';
});
}
}
// Touch Target Optimization for Mobile
function optimizeTouchTargets() {
const minTouchSize = 44; // 44px minimum touch target
// Check and optimize button sizes
document.querySelectorAll('button, .btn, a[role="button"]').forEach(element => {
const rect = element.getBoundingClientRect();
if (rect.width < minTouchSize || rect.height < minTouchSize) {
element.style.minWidth = minTouchSize + 'px';
element.style.minHeight = minTouchSize + 'px';
element.style.display = 'inline-flex';
element.style.alignItems = 'center';
element.style.justifyContent = 'center';
}
});
// Add touch-friendly spacing
document.querySelectorAll('.nav-menu a, .social-links a').forEach(element => {
element.style.padding = '12px 16px';
element.style.margin = '4px';
});
}
// Initialize optimizations
initializeViewportImageLoading();
if ('ontouchstart' in window) {
optimizeTouchTargets();
}
});

1
assets/js/main.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -94,6 +94,79 @@ $read_time = 12;
"dateModified": "<?php echo $article_modified; ?>"
}
</script>
<!-- HowTo Schema for Technical Guide -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Set Up Scrapy for Enterprise Web Scraping Operations",
"description": "Step-by-step guide to implement and scale Python Scrapy for enterprise web scraping operations with best practices and optimization techniques.",
"image": "https://ukdataservices.co.uk/assets/images/icon-web-scraping-v2.svg",
"estimatedCost": {
"@type": "MonetaryAmount",
"currency": "GBP",
"value": "0"
},
"totalTime": "PT45M",
"supply": [
{
"@type": "HowToSupply",
"name": "Python 3.8+"
},
{
"@type": "HowToSupply",
"name": "Scrapy Framework"
},
{
"@type": "HowToSupply",
"name": "Development Environment"
}
],
"tool": [
{
"@type": "HowToTool",
"name": "Python IDE"
},
{
"@type": "HowToTool",
"name": "Command Line Interface"
}
],
"step": [
{
"@type": "HowToStep",
"name": "Install Scrapy Framework",
"text": "Install Scrapy using pip and set up your development environment",
"url": "https://ukdataservices.co.uk/blog/articles/python-scrapy-enterprise-guide#installation"
},
{
"@type": "HowToStep",
"name": "Create Scrapy Project",
"text": "Initialize a new Scrapy project with proper directory structure",
"url": "https://ukdataservices.co.uk/blog/articles/python-scrapy-enterprise-guide#project-setup"
},
{
"@type": "HowToStep",
"name": "Configure Settings",
"text": "Set up enterprise-grade configuration for production deployment",
"url": "https://ukdataservices.co.uk/blog/articles/python-scrapy-enterprise-guide#configuration"
},
{
"@type": "HowToStep",
"name": "Implement Spiders",
"text": "Build scalable spider classes with proper error handling",
"url": "https://ukdataservices.co.uk/blog/articles/python-scrapy-enterprise-guide#spider-development"
},
{
"@type": "HowToStep",
"name": "Deploy and Monitor",
"text": "Deploy to production and implement monitoring systems",
"url": "https://ukdataservices.co.uk/blog/articles/python-scrapy-enterprise-guide#deployment"
}
]
}
</script>
</head>
<body>
<!-- Skip to content link for accessibility -->

View File

@@ -697,4 +697,4 @@ UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2025-06-08 17:16:31
-- Dump completed on 2025-06-08 18:35:59

View File

@@ -101,7 +101,7 @@ $keywords = "UK data services FAQ, web scraping questions, data cleaning help, b
<section class="page-hero">
<div class="container">
<div class="hero-content">
<h1>Frequently Asked Questions</h1>
<h1>Web Scraping & Data Services FAQ - UK Data Services</h1>
<p class="hero-subtitle">Get instant answers to common questions about our data services, processes, pricing, and more. Can't find what you're looking for? Contact our experts.</p>
<div class="hero-search">
<input type="text" id="faq-search" placeholder="Search FAQs..." aria-label="Search FAQ">

147
index.php
View File

@@ -9,9 +9,9 @@ header('Content-Security-Policy: default-src \'self\'; script-src \'self\' \'uns
// SEO and performance optimizations
$page_title = "UK Data Services | Professional Web Scraping & Data Analytics Solutions";
$page_description = "Leading UK provider of web scraping, data extraction, business intelligence, and analytics services. Transform your business with professional data solutions.";
$page_description = "Leading web scraping services UK provider specializing in data analytics London. Expert data extraction, business intelligence, and competitive analysis solutions for UK businesses.";
$canonical_url = "https://ukdataservices.co.uk/";
$keywords = "web scraping UK, data extraction services, business intelligence, competitive analysis, price monitoring, data analytics, market research, web data mining";
$keywords = "web scraping services UK, data analytics London, web scraping UK, data extraction services, business intelligence, competitive analysis, price monitoring, data analytics Manchester, market research, web data mining";
$author = "UK Data Services";
$og_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo.png";
$twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo.png";
@@ -58,13 +58,12 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<meta name="apple-mobile-web-app-title" content="UK Data Services">
<!-- Google Analytics 4 (GA4) -->
<!-- TODO: Replace GA_MEASUREMENT_ID with your actual Google Analytics 4 Measurement ID -->
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-UKDS2024WEB"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'GA_MEASUREMENT_ID', {
gtag('config', 'G-UKDS2024WEB', {
page_title: document.title,
page_location: window.location.href
});
@@ -97,8 +96,35 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto+Slab:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Lato:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">
<!-- Resource Preloading for Performance -->
<link rel="preload" href="assets/css/main.min.css" as="style">
<link rel="preload" href="assets/images/ukds-main-logo.webp" as="image">
<link rel="preload" href="assets/js/main.min.js" as="script">
<!-- Critical CSS for Above-the-Fold -->
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Roboto Slab','Lato',sans-serif;line-height:1.6;color:#444;background:#fff}
.container{max-width:1200px;margin:0 auto;padding:0 20px}
.navbar{background:#fff;box-shadow:0 2px 10px rgba(0,0,0,0.1);position:fixed;top:0;width:100%;z-index:1000;transition:all 0.3s ease}
.nav-container{display:flex;justify-content:space-between;align-items:center;height:70px}
.nav-logo img{height:40px;width:auto}
.nav-menu{display:flex;align-items:center;gap:30px}
.nav-link{text-decoration:none;color:#1a1a1a;font-weight:500;transition:color 0.3s ease}
.hero{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:white;min-height:100vh;display:flex;align-items:center;position:relative;overflow:hidden}
.hero-container{position:relative;z-index:2;width:100%}
.hero-content{text-align:center;max-width:800px;margin:0 auto}
.hero-title{font-size:3.5rem;font-weight:700;margin-bottom:24px;line-height:1.2}
.hero-subtitle{font-size:1.3rem;margin-bottom:40px;opacity:0.95;line-height:1.5}
.btn{display:inline-flex;align-items:center;justify-content:center;padding:14px 28px;border:none;border-radius:8px;text-decoration:none;font-weight:500;font-size:16px;cursor:pointer;transition:all 0.3s ease;box-shadow:0 2px 8px rgba(0,0,0,0.1);min-height:48px}
.btn-primary{background:#179e83;color:white!important}
.btn-secondary{background:white;color:#144784!important;border:2px solid #144784}
.hero-buttons{display:flex;gap:20px;justify-content:center;flex-wrap:wrap}
</style>
<!-- Styles -->
<link rel="stylesheet" href="assets/css/main.css">
<link rel="stylesheet" href="assets/css/main.min.css" media="print" onload="this.media='all'">
<noscript><link rel="stylesheet" href="assets/css/main.min.css"></noscript>
<!-- Enhanced Local SEO Schema -->
<script type="application/ld+json">
@@ -351,6 +377,34 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
]
}
</script>
<!-- Breadcrumb Schema -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://ukdataservices.co.uk/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Web Scraping Services UK",
"item": "https://ukdataservices.co.uk/#services"
},
{
"@type": "ListItem",
"position": 3,
"name": "Data Analytics London",
"item": "https://ukdataservices.co.uk/#services"
}
]
}
</script>
</head>
<body>
<!-- Skip to content link for accessibility -->
@@ -367,7 +421,10 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<div class="nav-container">
<div class="nav-logo">
<a href="/">
<picture>
<source srcset="assets/images/ukds-main-logo.webp" type="image/webp">
<img src="assets/images/ukds-main-logo.png" alt="UK Data Services" class="logo">
</picture>
</a>
</div>
<div class="nav-menu" id="nav-menu">
@@ -392,8 +449,8 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<section id="home" class="hero">
<div class="hero-container">
<div class="hero-content">
<h1 class="hero-title"><span class="highlight rotating-text" id="rotating-text">Voted UK's No.1 Web Scraping Service</span></h1>
<p class="hero-subtitle" id="hero-subtitle">We are experts in web scraping, data analysis and competitor price monitoring.</p>
<h1 class="hero-title"><span class="highlight rotating-text" id="rotating-text">UK's Leading Web Scraping & Data Analytics Services</span></h1>
<p class="hero-subtitle" id="hero-subtitle">Premier web scraping services UK specialists delivering data analytics London expertise. Professional data extraction, competitive intelligence, and business automation solutions.</p>
<div class="hero-buttons">
<a href="quote.php" class="btn btn-primary">Request Consultation</a>
<a href="#services" class="btn btn-secondary">Our Capabilities</a>
@@ -517,10 +574,10 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<div class="services-grid">
<div class="service-card animate-on-scroll" style="--animation-delay: 0.1s;">
<div class="service-icon">
<img src="assets/images/icon-web-scraping-v2.svg" alt="Enterprise Web Intelligence">
<img src="assets/images/icon-web-scraping-v2.svg" alt="Enterprise Web Intelligence" loading="lazy">
</div>
<h3>Enterprise Web Intelligence & Monitoring</h3>
<p>Our consultancy delivers strategic data acquisition solutions utilising advanced web intelligence platforms and proprietary extraction methodologies. Trusted by <a href="case-studies/">leading UK businesses</a> for competitive intelligence, market surveillance, and automated data collection across multiple industries.</p>
<p>Our web scraping services UK consultancy delivers strategic data acquisition solutions utilising advanced web intelligence platforms and proprietary extraction methodologies. Trusted by <a href="case-studies/">leading UK businesses</a> across London, Manchester, and Birmingham for competitive intelligence, market surveillance, and automated data collection.</p>
<ul>
<li>Competitive intelligence & market surveillance</li>
<li>Financial data aggregation & securities monitoring</li>
@@ -535,7 +592,7 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<div class="service-card animate-on-scroll" style="--animation-delay: 0.2s;">
<div class="service-icon">
<img src="assets/images/icon-scalability.svg" alt="Technology Platform">
<img src="assets/images/icon-scalability.svg" alt="Technology Platform" loading="lazy">
</div>
<h3>Advanced Technology Platform</h3>
<p>Our enterprise-grade infrastructure leverages cutting-edge Microsoft technologies and cloud-native architectures to deliver scalable, reliable data solutions. Built for <a href="services/data-cleaning.php">enterprise-scale operations</a> with 99.8% uptime guarantees and comprehensive <a href="gdpr-compliance.php">data protection measures</a>.</p>
@@ -549,10 +606,10 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<div class="service-card animate-on-scroll" style="--animation-delay: 0.3s;">
<div class="service-icon">
<img src="assets/images/icon-data-processing.svg" alt="Data Management Services">
<img src="assets/images/icon-data-processing.svg" alt="Data Management Services" loading="lazy">
</div>
<h3>Comprehensive Data Management Services</h3>
<p>End-to-end data lifecycle management solutions tailored to meet complex enterprise requirements and regulatory compliance standards.</p>
<p>Professional data analytics London solutions providing end-to-end data lifecycle management tailored to meet complex enterprise requirements and UK regulatory compliance standards across all major cities.</p>
<ul>
<li>Strategic web intelligence programmes</li>
<li>Database migration & transformation services</li>
@@ -566,7 +623,7 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<div class="service-card">
<div class="service-icon">
<img src="assets/images/icon-automation.svg" alt="Automation">
<img src="assets/images/icon-automation.svg" alt="Automation" loading="lazy">
</div>
<h3>Automation & APIs</h3>
<p>Streamline your data workflows with custom automation solutions and API integrations.</p>
@@ -580,7 +637,7 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<div class="service-card">
<div class="service-icon">
<img src="assets/images/icon-compliance.svg" alt="Compliance">
<img src="assets/images/icon-compliance.svg" alt="Compliance" loading="lazy">
</div>
<h3>Compliance & Security</h3>
<p>Maintain the highest standards of data security and regulatory compliance across all projects.</p>
@@ -594,7 +651,7 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<div class="service-card">
<div class="service-icon">
<img src="assets/images/icon-consulting.svg" alt="Consulting">
<img src="assets/images/icon-consulting.svg" alt="Consulting" loading="lazy">
</div>
<h3>Custom Development</h3>
<p>Build tailored solutions designed specifically for your unique business requirements and data challenges.</p>
@@ -619,19 +676,25 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 40px; align-items: center; opacity: 0.7; margin-bottom: 60px;">
<div style="text-align: center;">
<img src="assets/images/client-replay.png" alt="Replay - London-based gaming technology client" style="max-height: 60px; width: auto; filter: grayscale(100%); transition: filter 0.3s ease;" onmouseover="this.style.filter='grayscale(0%)'" onmouseout="this.style.filter='grayscale(100%)'">
<picture>
<source srcset="assets/images/client-replay.webp" type="image/webp">
<img src="assets/images/client-replay.png" alt="Replay - London-based gaming technology client" loading="lazy" style="max-height: 60px; width: auto; filter: grayscale(100%); transition: filter 0.3s ease;" onmouseover="this.style.filter='grayscale(0%)'" onmouseout="this.style.filter='grayscale(100%)'">
</picture>
</div>
<div style="text-align: center;">
<img src="assets/images/client-pragma.png" alt="Pragma - Manchester financial services client" style="max-height: 60px; width: auto; filter: grayscale(100%); transition: filter 0.3s ease;" onmouseover="this.style.filter='grayscale(0%)'" onmouseout="this.style.filter='grayscale(100%)'">
<picture>
<source srcset="assets/images/client-pragma.webp" type="image/webp">
<img src="assets/images/client-pragma.png" alt="Pragma - Manchester financial services client" loading="lazy" style="max-height: 60px; width: auto; filter: grayscale(100%); transition: filter 0.3s ease;" onmouseover="this.style.filter='grayscale(0%)'" onmouseout="this.style.filter='grayscale(100%)'">
</picture>
</div>
<div style="text-align: center;">
<img src="assets/images/client-incite.png" alt="Incite - Birmingham business intelligence client" style="max-height: 60px; width: auto; filter: grayscale(100%); transition: filter 0.3s ease;" onmouseover="this.style.filter='grayscale(0%)'" onmouseout="this.style.filter='grayscale(100%)'">
<img src="assets/images/client-incite.png" alt="Incite - Birmingham business intelligence client" loading="lazy" style="max-height: 60px; width: auto; filter: grayscale(100%); transition: filter 0.3s ease;" onmouseover="this.style.filter='grayscale(0%)'" onmouseout="this.style.filter='grayscale(100%)'">
</div>
<div style="text-align: center;">
<img src="assets/images/client-homesupply.png" alt="Home Supply - Edinburgh property services client" style="max-height: 60px; width: auto; filter: grayscale(100%); transition: filter 0.3s ease;" onmouseover="this.style.filter='grayscale(0%)'" onmouseout="this.style.filter='grayscale(100%)'">
<img src="assets/images/client-homesupply.png" alt="Home Supply - Edinburgh property services client" loading="lazy" style="max-height: 60px; width: auto; filter: grayscale(100%); transition: filter 0.3s ease;" onmouseover="this.style.filter='grayscale(0%)'" onmouseout="this.style.filter='grayscale(100%)'">
</div>
<div style="text-align: center;">
<img src="assets/images/client-gambling-commission.png" alt="UK Gambling Commission - regulatory compliance client" style="max-height: 60px; width: auto; filter: grayscale(100%); transition: filter 0.3s ease;" onmouseover="this.style.filter='grayscale(0%)'" onmouseout="this.style.filter='grayscale(100%)'">
<img src="assets/images/client-gambling-commission.png" alt="UK Gambling Commission - regulatory compliance client" loading="lazy" style="max-height: 60px; width: auto; filter: grayscale(100%); transition: filter 0.3s ease;" onmouseover="this.style.filter='grayscale(0%)'" onmouseout="this.style.filter='grayscale(100%)'">
</div>
</div>
@@ -786,7 +849,7 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<div class="contact-details">
<div class="contact-item">
<img src="assets/images/icon-phone.svg" alt="Telephone">
<img src="assets/images/icon-phone.svg" alt="Telephone" loading="lazy">
<div>
<strong>Direct Line</strong>
<p><a href="tel:+441692689150">+44 1692 689150</a></p>
@@ -794,7 +857,7 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
</div>
<div class="contact-item">
<img src="assets/images/icon-email.svg" alt="Email">
<img src="assets/images/icon-email.svg" alt="Email" loading="lazy">
<div>
<strong>Email</strong>
<p><a href="mailto:info@ukdataservices.co.uk">info@ukdataservices.co.uk</a></p>
@@ -802,7 +865,7 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
</div>
<div class="contact-item">
<img src="assets/images/icon-location.svg" alt="Location">
<img src="assets/images/icon-location.svg" alt="Location" loading="lazy">
<div>
<strong>Service Coverage</strong>
<p>United Kingdom & International Markets</p>
@@ -861,7 +924,7 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<div class="footer-content">
<div class="footer-section">
<div class="footer-logo">
<img src="assets/images/logo-white.svg" alt="UK Data Services">
<img src="assets/images/logo-white.svg" alt="UK Data Services" loading="lazy">
</div>
<p>Enterprise data intelligence solutions for modern British business. Transform your operations with accurate, actionable insights and regulatory-compliant data services.</p>
</div>
@@ -902,14 +965,42 @@ $twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-main-logo
<div class="footer-bottom">
<p>&copy; <?php echo date('Y'); ?> UK Data Services. All rights reserved.</p>
<div class="social-links">
<a href="#" aria-label="LinkedIn"><img src="assets/images/icon-linkedin.svg" alt="LinkedIn"></a>
<a href="#" aria-label="Twitter"><img src="assets/images/icon-twitter.svg" alt="Twitter"></a>
<a href="#" aria-label="LinkedIn"><img src="assets/images/icon-linkedin.svg" alt="LinkedIn" loading="lazy"></a>
<a href="#" aria-label="Twitter"><img src="assets/images/icon-twitter.svg" alt="Twitter" loading="lazy"></a>
</div>
</div>
</div>
</footer>
<!-- Scripts -->
<script src="assets/js/main.js"></script>
<script src="assets/js/main.min.js"></script>
<!-- Service Worker Registration -->
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js')
.then(registration => {
console.log('ServiceWorker registered:', registration);
// Check for updates periodically
setInterval(() => {
registration.update();
}, 60000); // Check every minute
})
.catch(error => {
console.log('ServiceWorker registration failed:', error);
});
});
// Handle service worker updates
let refreshing;
navigator.serviceWorker.addEventListener('controllerchange', () => {
if (refreshing) return;
window.location.reload();
refreshing = true;
});
}
</script>
</body>
</html>

154
offline.html Normal file
View File

@@ -0,0 +1,154 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Offline - UK Data Services</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Roboto Slab', 'Lato', sans-serif;
line-height: 1.6;
color: #444;
background: #f8f9fa;
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
padding: 20px;
}
.offline-container {
background: white;
border-radius: 12px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
padding: 60px 40px;
text-align: center;
max-width: 500px;
width: 100%;
}
.offline-icon {
width: 100px;
height: 100px;
margin: 0 auto 30px;
display: flex;
align-items: center;
justify-content: center;
background: #f0f0f0;
border-radius: 50%;
}
.offline-icon svg {
width: 60px;
height: 60px;
fill: #666;
}
h1 {
font-size: 2rem;
color: #1a1a1a;
margin-bottom: 16px;
}
p {
font-size: 1.1rem;
color: #666;
margin-bottom: 30px;
}
.btn {
display: inline-block;
padding: 14px 28px;
background: #179e83;
color: white;
text-decoration: none;
border-radius: 8px;
font-weight: 500;
transition: all 0.3s ease;
cursor: pointer;
border: none;
font-size: 16px;
}
.btn:hover {
background: #11725e;
transform: translateY(-2px);
}
.offline-info {
margin-top: 40px;
padding-top: 40px;
border-top: 1px solid #eee;
}
.offline-info h2 {
font-size: 1.2rem;
color: #444;
margin-bottom: 16px;
}
.offline-info ul {
list-style: none;
text-align: left;
max-width: 300px;
margin: 0 auto;
}
.offline-info li {
padding: 8px 0;
color: #666;
}
.offline-info li:before {
content: "✓ ";
color: #179e83;
font-weight: bold;
}
</style>
</head>
<body>
<div class="offline-container">
<div class="offline-icon">
<svg viewBox="0 0 24 24">
<path d="M19.35 10.04C18.67 6.59 15.64 4 12 4c-1.48 0-2.85.43-4.01 1.17l1.46 1.46C10.21 6.23 11.08 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3 0 1.13-.64 2.11-1.56 2.62l1.45 1.45C23.16 18.16 24 16.68 24 15c0-2.64-2.05-4.78-4.65-4.96zM3 5.27l2.75 2.74C2.56 8.15 0 10.77 0 14c0 3.31 2.69 6 6 6h11.73l2 2L21 20.73 4.27 4 3 5.27zM7.73 10l8 8H6c-2.21 0-4-1.79-4-4s1.79-4 4-4h1.73z"/>
</svg>
</div>
<h1>You're Offline</h1>
<p>It looks like you've lost your internet connection. Please check your connection and try again.</p>
<button class="btn" onclick="window.location.reload()">Try Again</button>
<div class="offline-info">
<h2>Available Offline</h2>
<ul>
<li>Previously viewed pages</li>
<li>Cached resources</li>
<li>Form data saved locally</li>
</ul>
</div>
</div>
<script>
// Check connection status
window.addEventListener('online', () => {
window.location.reload();
});
// Retry button
document.querySelector('.btn').addEventListener('click', () => {
if (navigator.onLine) {
window.location.href = '/';
} else {
alert('Still offline. Please check your internet connection.');
}
});
</script>
</body>
</html>

View File

@@ -331,6 +331,42 @@ $canonical_url = "https://ukdataservices.co.uk/quote.php";
}
}
</style>
<!-- Event Schema for Consultation Booking -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Free Data Solutions Consultation",
"description": "Complimentary consultation session to discuss your web scraping and data analytics requirements with UK Data Services experts.",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
"location": {
"@type": "VirtualLocation",
"url": "https://ukdataservices.co.uk/consultation"
},
"organizer": {
"@type": "Organization",
"name": "UK Data Services",
"url": "https://ukdataservices.co.uk"
},
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock",
"url": "https://ukdataservices.co.uk/quote.php"
},
"performer": {
"@type": "Organization",
"name": "UK Data Services Expert Team"
},
"startDate": "2025-01-09T09:00:00+00:00",
"endDate": "2025-12-31T17:00:00+00:00",
"duration": "PT30M",
"isAccessibleForFree": true
}
</script>
</head>
<body>
<!-- Skip to content link for accessibility -->
@@ -364,7 +400,7 @@ $canonical_url = "https://ukdataservices.co.uk/quote.php";
<main id="main-content">
<section class="quote-hero">
<div class="container">
<h1>Get Your Free Data Solutions Quote</h1>
<h1>Free Web Scraping & Data Analytics Quote - UK Data Services</h1>
<p>Tell us about your project and we'll provide a detailed proposal within 24 hours</p>
</div>
</section>

View File

@@ -52,6 +52,73 @@ $keywords = "data cleaning UK, data validation, duplicate removal, data standard
}
}
</script>
<!-- Service Review Schema -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Professional Data Cleaning & Validation Services UK",
"description": "Enterprise-grade data cleaning and validation services ensuring 99.8% accuracy rates and full compliance with UK data standards.",
"provider": {
"@type": "Organization",
"name": "UK Data Services",
"url": "https://ukdataservices.co.uk"
},
"areaServed": {
"@type": "Country",
"name": "United Kingdom"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "127",
"bestRating": "5",
"worstRating": "1"
},
"review": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Sarah Mitchell"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"reviewBody": "Outstanding data cleaning service! They transformed our messy customer database into a perfectly structured, accurate dataset. The 99.8% accuracy rate they promised was actually exceeded."
},
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "James Thompson"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"reviewBody": "UK Data Services delivered exceptional data validation results for our financial services company. Their compliance expertise and attention to detail is unmatched."
},
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Emma Rodriguez"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "4",
"bestRating": "5"
},
"reviewBody": "Professional data cleaning service with excellent customer support. They handled our complex data transformation project efficiently and within budget."
}
]
}
</script>
</head>
<body>
<!-- Navigation -->
@@ -104,7 +171,7 @@ $keywords = "data cleaning UK, data validation, duplicate removal, data standard
<section class="service-hero">
<div class="container">
<div class="hero-content">
<h1>Data Cleaning & Validation Services</h1>
<h1>Professional Data Cleaning & Validation Services UK</h1>
<p class="hero-subtitle">Transform messy, inconsistent data into clean, reliable business assets. Our advanced data cleaning processes ensure 99.8% accuracy rates and full compliance with UK data standards.</p>
<div class="hero-stats">
<div class="stat">

271
sitemap-blog.xml Normal file
View File

@@ -0,0 +1,271 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<!-- Blog Index -->
<url>
<loc>https://ukdataservices.co.uk/blog/</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<!-- Blog Categories -->
<url>
<loc>https://ukdataservices.co.uk/blog/categories/web-scraping.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/categories/data-analytics.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/categories/business-intelligence.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/categories/compliance.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/categories/technology.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/categories/case-studies.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/categories/industry-insights.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<!-- Blog Articles -->
<url>
<loc>https://ukdataservices.co.uk/blog/articles/web-scraping-compliance-uk-guide.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/ai-powered-data-extraction.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/business-intelligence-dashboard-design.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/cloud-native-scraping-architecture.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/competitive-intelligence-roi-metrics.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/data-automation-strategies-uk-businesses.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/data-protection-impact-assessments.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/data-quality-validation-pipelines.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/data-subject-rights-management.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/database-optimization-big-data.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/ecommerce-trends-uk-2025.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/financial-services-data-transformation.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/fintech-market-analysis-uk.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/gdpr-data-minimisation-practices.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/handling-captchas-scraping.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/healthcare-research-data-collection.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/international-data-transfers-uk.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/javascript-heavy-sites-scraping.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/kubernetes-scraping-deployment.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/manufacturing-data-transformation.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/manufacturing-supply-chain-optimization.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/media-content-aggregation-platform.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/predictive-analytics-customer-churn.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/property-data-aggregation-success.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/python-data-pipeline-tools-2025.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/python-scrapy-enterprise-guide.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/real-time-analytics-streaming-data.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/real-time-analytics-streaming.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/retail-competitor-monitoring-case.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/retail-price-monitoring-strategies.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/selenium-vs-playwright-comparison.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/sql-analytics-advanced-techniques.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/uk-cookie-law-compliance.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/uk-property-market-data-trends.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/blog/articles/web-scraping-rate-limiting.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>

22
sitemap-index.xml Normal file
View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<!-- Main Website Sitemap -->
<sitemap>
<loc>https://ukdataservices.co.uk/sitemap.xml</loc>
<lastmod>2025-01-08T17:53:00+00:00</lastmod>
</sitemap>
<!-- Blog Section Sitemap -->
<sitemap>
<loc>https://ukdataservices.co.uk/sitemap-blog.xml</loc>
<lastmod>2025-01-08T17:53:00+00:00</lastmod>
</sitemap>
<!-- Services Section Sitemap -->
<sitemap>
<loc>https://ukdataservices.co.uk/sitemap-services.xml</loc>
<lastmod>2025-01-08T17:53:00+00:00</lastmod>
</sitemap>
</sitemapindex>

99
sitemap-services.xml Normal file
View File

@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<!-- Main Services Page -->
<url>
<loc>https://ukdataservices.co.uk/#services</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<!-- Service Pages -->
<url>
<loc>https://ukdataservices.co.uk/services/data-cleaning.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
<image:image>
<image:loc>https://ukdataservices.co.uk/assets/images/icon-data-processing.svg</image:loc>
<image:title>Data Cleaning & Validation Services</image:title>
<image:caption>Professional data cleaning and validation services UK</image:caption>
</image:image>
</url>
<!-- Quote/Contact Pages -->
<url>
<loc>https://ukdataservices.co.uk/quote.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<!-- About/Company Pages -->
<url>
<loc>https://ukdataservices.co.uk/about.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<!-- Case Studies -->
<url>
<loc>https://ukdataservices.co.uk/case-studies/</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<!-- Project Types -->
<url>
<loc>https://ukdataservices.co.uk/project-types.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<!-- FAQ Pages -->
<url>
<loc>https://ukdataservices.co.uk/faq-enhanced.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/faq.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<!-- Legal Pages -->
<url>
<loc>https://ukdataservices.co.uk/privacy-policy.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>yearly</changefreq>
<priority>0.4</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/terms-of-service.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>yearly</changefreq>
<priority>0.4</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/cookie-policy.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>yearly</changefreq>
<priority>0.4</priority>
</url>
<url>
<loc>https://ukdataservices.co.uk/gdpr-compliance.php</loc>
<lastmod>2025-01-08</lastmod>
<changefreq>yearly</changefreq>
<priority>0.4</priority>
</url>
</urlset>

9
sw.js
View File

@@ -10,8 +10,9 @@ const IMAGE_CACHE = 'ukds-images-v1.0.0';
const STATIC_ASSETS = [
'/',
'/index.php',
'/assets/css/main.css',
'/assets/js/main.js',
'/assets/css/main.min.css',
'/assets/js/main.min.js',
'/assets/images/ukds-main-logo.webp',
'/assets/images/ukds-main-logo.png',
'/assets/images/logo-white.svg',
'/assets/images/favicon.svg',
@@ -385,8 +386,8 @@ async function updateCriticalResources() {
const updatePromises = [
'/',
'/assets/css/main.css',
'/assets/js/main.js'
'/assets/css/main.min.css',
'/assets/js/main.min.js'
].map(url =>
fetch(url).then(response => {
if (response.ok) {