From 34ddbe3fddf4f1b3543c7e9131715e451fb4d7e6 Mon Sep 17 00:00:00 2001 From: Peter Foster Date: Tue, 10 Mar 2026 04:37:15 +0000 Subject: [PATCH] Fix SEO issues found via GSC audit - Fix broken PHP syntax in real-time data extraction article - Fix truncated meta description on homepage - Fix truncated titles on competitive intelligence and price monitoring pages - Update Selenium vs Playwright article year from 2024 to 2026 - Replace no-store cache headers on homepage with private revalidation - 301 redirect thin duplicate real-time streaming article to canonical - Add HSTS header to data-cleaning service page - Replace SVG og:images with PNG social card across 24 blog articles - Add Services breadcrumb level to London, Manchester, Birmingham pages --- blog/articles/ai-web-scraping-2026.php | 2 +- ...business-intelligence-dashboard-design.php | 6 +- .../cloud-native-scraping-architecture.php | 10 +- .../competitive-intelligence-roi-metrics.php | 2 +- ...ta-automation-strategies-uk-businesses.php | 16 +- ...tion-impact-assessment-web-scraping-uk.php | 2 +- .../data-protection-impact-assessments.php | 6 +- ...financial-services-data-transformation.php | 10 +- .../gdpr-data-minimisation-practices.php | 10 +- blog/articles/handling-captchas-scraping.php | 10 +- .../javascript-heavy-sites-scraping.php | 6 +- ...ormance-evaluation-real-time-streaming.php | 4 +- ...ation-apache-kafka-real-time-streaming.php | 4 +- .../predictive-analytics-customer-churn.php | 6 +- blog/articles/python-airflow-alternatives.php | 4 +- .../python-scrapy-enterprise-guide.php | 10 +- .../real-time-analytics-streaming.php | 180 +----------------- ...traction-technical-guide-uk-businesses.php | 2 +- .../retail-competitor-monitoring-case.php | 2 +- .../retail-price-monitoring-strategies.php | 10 +- .../selenium-vs-playwright-comparison.php | 12 +- blog/articles/uk-cookie-law-compliance.php | 2 +- .../uk-property-market-data-trends.php | 10 +- .../web-scraping-compliance-uk-guide.php | 6 +- .../web-scraping-lead-generation-uk.php | 2 +- blog/articles/web-scraping-rate-limiting.php | 10 +- index.php | 8 +- locations/birmingham.php | 1 + locations/london.php | 1 + locations/manchester.php | 1 + services/competitive-intelligence.php | 2 +- services/data-cleaning.php | 2 + services/price-monitoring.php | 2 +- 33 files changed, 95 insertions(+), 266 deletions(-) diff --git a/blog/articles/ai-web-scraping-2026.php b/blog/articles/ai-web-scraping-2026.php index fca8055..9da3f71 100644 --- a/blog/articles/ai-web-scraping-2026.php +++ b/blog/articles/ai-web-scraping-2026.php @@ -8,7 +8,7 @@ $article_author = 'Alex Kumar'; $canonical_url = 'https://ukdataservices.co.uk/blog/articles/ai-web-scraping-2026'; $article_published = '2026-03-08T09:00:00+00:00'; $article_modified = '2026-03-08T09:00:00+00:00'; -$og_image = 'https://ukdataservices.co.uk/assets/images/hero-data-analytics.svg'; +$og_image = 'https://ukdataservices.co.uk/assets/images/ukds-social-card.png'; $read_time = 10; ?> diff --git a/blog/articles/business-intelligence-dashboard-design.php b/blog/articles/business-intelligence-dashboard-design.php index b82abd2..195f581 100644 --- a/blog/articles/business-intelligence-dashboard-design.php +++ b/blog/articles/business-intelligence-dashboard-design.php @@ -10,7 +10,7 @@ $article_author = "David Martinez"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/business-intelligence-dashboard-design.php"; $article_published = "2025-06-08T09:00:00+00:00"; $article_modified = "2025-06-08T14:30:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/dashboard-ecommerce.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 12; ?> @@ -1264,10 +1264,10 @@ $read_time = 12;

© UK Data Services. All rights reserved.

diff --git a/blog/articles/cloud-native-scraping-architecture.php b/blog/articles/cloud-native-scraping-architecture.php index ef9dfc2..139333e 100644 --- a/blog/articles/cloud-native-scraping-architecture.php +++ b/blog/articles/cloud-native-scraping-architecture.php @@ -10,7 +10,7 @@ $article_author = "James Wilson"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/cloud-native-scraping-architecture"; $article_published = "2025-05-25T09:00:00+00:00"; $article_modified = "2025-05-25T09:00:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/icon-automation.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 11; ?> @@ -115,10 +115,10 @@ $read_time = 11;
@@ -487,10 +487,10 @@ class ProxyManager:

© UK Data Services. All rights reserved.

diff --git a/blog/articles/competitive-intelligence-roi-metrics.php b/blog/articles/competitive-intelligence-roi-metrics.php index 52bbb55..de9e0e7 100644 --- a/blog/articles/competitive-intelligence-roi-metrics.php +++ b/blog/articles/competitive-intelligence-roi-metrics.php @@ -10,7 +10,7 @@ $article_author = "David Martinez"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/competitive-intelligence-roi-metrics.php"; $article_published = "2025-06-05T10:00:00+00:00"; $article_modified = "2025-06-05T15:30:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/hero-data-analytics.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 8; ?> diff --git a/blog/articles/data-automation-strategies-uk-businesses.php b/blog/articles/data-automation-strategies-uk-businesses.php index c906af2..4022b02 100644 --- a/blog/articles/data-automation-strategies-uk-businesses.php +++ b/blog/articles/data-automation-strategies-uk-businesses.php @@ -9,7 +9,7 @@ $meta_description = "Discover proven data automation strategies that UK business $canonical_url = "https://ukdataservices.co.uk/blog/articles/data-automation-strategies-uk-businesses"; $keywords = "data automation UK, business process automation, automation strategies, UK business automation, ROI automation"; $author = "UK Data Services"; -$og_image = "https://ukdataservices.co.uk/assets/images/icon-automation.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; ?> @@ -226,11 +226,11 @@ $og_image = "https://ukdataservices.co.uk/assets/images/icon-automation.svg";

Our automation specialists offer free consultations to help you identify high-impact automation opportunities.

- Phone + Phone +44 20 1234 5678
- Email + Email automation@ukdataservices.co.uk
@@ -253,11 +253,11 @@ $og_image = "https://ukdataservices.co.uk/assets/images/icon-automation.svg";

Share This Article

@@ -300,15 +300,15 @@ $og_image = "https://ukdataservices.co.uk/assets/images/icon-automation.svg";

Contact

diff --git a/blog/articles/data-protection-impact-assessment-web-scraping-uk.php b/blog/articles/data-protection-impact-assessment-web-scraping-uk.php index 24b05a3..42f176d 100644 --- a/blog/articles/data-protection-impact-assessment-web-scraping-uk.php +++ b/blog/articles/data-protection-impact-assessment-web-scraping-uk.php @@ -10,7 +10,7 @@ $article_author = "David Thompson"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/data-protection-impact-assessment-web-scraping-uk"; $article_published = "2026-02-26T09:00:00+00:00"; $article_modified = "2026-02-26T09:00:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/icon-compliance.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 12; ?> diff --git a/blog/articles/data-protection-impact-assessments.php b/blog/articles/data-protection-impact-assessments.php index d279cf2..0677c73 100644 --- a/blog/articles/data-protection-impact-assessments.php +++ b/blog/articles/data-protection-impact-assessments.php @@ -10,7 +10,7 @@ $article_author = "Sarah Chen"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/data-protection-impact-assessments"; $article_published = "2025-05-18T09:00:00+00:00"; $article_modified = "2025-05-18T09:00:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/icon-compliance.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 10; ?> @@ -500,8 +500,8 @@ $read_time = 10;

UK Data Services

Professional data extraction, analysis, and compliance services for UK businesses.

@@ -408,10 +408,10 @@ $read_time = 7;

© UK Data Services. All rights reserved.

diff --git a/blog/articles/gdpr-data-minimisation-practices.php b/blog/articles/gdpr-data-minimisation-practices.php index 69b1d0c..385156e 100644 --- a/blog/articles/gdpr-data-minimisation-practices.php +++ b/blog/articles/gdpr-data-minimisation-practices.php @@ -10,7 +10,7 @@ $article_author = "Sarah Chen"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/gdpr-data-minimisation-practices"; $article_published = "2025-05-20T09:00:00+00:00"; $article_modified = "2025-05-20T09:00:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/icon-compliance.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 6; ?> @@ -115,10 +115,10 @@ $read_time = 6;
@@ -437,10 +437,10 @@ END;

© UK Data Services. All rights reserved.

diff --git a/blog/articles/handling-captchas-scraping.php b/blog/articles/handling-captchas-scraping.php index 8bc3120..73bebbf 100644 --- a/blog/articles/handling-captchas-scraping.php +++ b/blog/articles/handling-captchas-scraping.php @@ -10,7 +10,7 @@ $article_author = "Michael Thompson"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/handling-captchas-scraping"; $article_published = "2025-05-05T09:00:00+00:00"; $article_modified = "2025-05-05T09:00:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/icon-security.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 8; ?> @@ -115,10 +115,10 @@ $read_time = 8;
@@ -655,10 +655,10 @@ def scrape_with_captcha_logging(url):

© UK Data Services. All rights reserved.

diff --git a/blog/articles/javascript-heavy-sites-scraping.php b/blog/articles/javascript-heavy-sites-scraping.php index 7585811..b7109fb 100644 --- a/blog/articles/javascript-heavy-sites-scraping.php +++ b/blog/articles/javascript-heavy-sites-scraping.php @@ -10,7 +10,7 @@ $article_author = "Michael Thompson"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/javascript-heavy-sites-scraping.php"; $article_published = "2025-06-01T11:00:00+00:00"; $article_modified = "2025-06-01T16:45:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/icon-web-scraping-v2.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 8; ?> @@ -502,10 +502,10 @@ await page.goto(url);

© UK Data Services. All rights reserved.

diff --git a/blog/articles/kafka-performance-evaluation-real-time-streaming.php b/blog/articles/kafka-performance-evaluation-real-time-streaming.php index b7ebe96..ad83430 100644 --- a/blog/articles/kafka-performance-evaluation-real-time-streaming.php +++ b/blog/articles/kafka-performance-evaluation-real-time-streaming.php @@ -21,8 +21,8 @@ $page_description = "A technical guide to evaluating Apache Kafka's performance $canonical_url = "https://ukdataservices.co.uk/blog/articles/kafka-performance-evaluation-real-time-streaming"; $keywords = "performance evaluation of apache kafka, kafka performance, real-time data streaming, kafka benchmarks, kafka tuning, kafka throughput, kafka latency"; $author = "Analytics Engineering Team"; -$og_image = "https://ukdataservices.co.uk/assets/images/hero-data-engineering.svg"; -$twitter_card_image = "https://ukdataservices.co.uk/assets/images/hero-data-engineering.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; +$twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $article_published = "2026-07-15"; $article_modified = "2026-07-15"; ?> diff --git a/blog/articles/performance-evaluation-apache-kafka-real-time-streaming.php b/blog/articles/performance-evaluation-apache-kafka-real-time-streaming.php index deb8045..53518ca 100644 --- a/blog/articles/performance-evaluation-apache-kafka-real-time-streaming.php +++ b/blog/articles/performance-evaluation-apache-kafka-real-time-streaming.php @@ -21,8 +21,8 @@ $page_description = "A deep dive into Apache Kafka performance evaluation for re $canonical_url = "https://ukdataservices.co.uk/blog/articles/performance-evaluation-apache-kafka-real-time-streaming.php"; $keywords = "apache kafka performance, kafka real-time data streaming, kafka performance evaluation, kafka throughput, kafka latency, stream processing performance, kafka tuning uk"; $author = "Analytics Engineering Team"; -$og_image = "https://ukdataservices.co.uk/assets/images/hero-data-analytics.svg"; -$twitter_card_image = "https://ukdataservices.co.uk/assets/images/hero-data-analytics.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; +$twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $article_date = '2024-06-14'; // New article, new date $last_modified = '2024-06-14'; $article_slug = 'performance-evaluation-apache-kafka-real-time-streaming'; diff --git a/blog/articles/predictive-analytics-customer-churn.php b/blog/articles/predictive-analytics-customer-churn.php index 5fd155c..f0cb265 100644 --- a/blog/articles/predictive-analytics-customer-churn.php +++ b/blog/articles/predictive-analytics-customer-churn.php @@ -10,7 +10,7 @@ $article_author = "David Martinez"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/predictive-analytics-customer-churn.php"; $article_published = "2025-06-08T10:30:00+00:00"; $article_modified = "2025-06-08T15:45:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/hero-data-analytics.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 14; ?> @@ -1658,10 +1658,10 @@ $read_time = 14;

© UK Data Services. All rights reserved.

diff --git a/blog/articles/python-airflow-alternatives.php b/blog/articles/python-airflow-alternatives.php index 09fc9ca..2de2832 100644 --- a/blog/articles/python-airflow-alternatives.php +++ b/blog/articles/python-airflow-alternatives.php @@ -12,8 +12,8 @@ $canonical_url = "https://ukdataservices.co.uk/blog/articles/python-airflow-alte $keywords = "airflow alternatives python, prefect vs airflow, dagster vs airflow, flyte vs airflow, python data orchestration, data pipeline tools uk"; $author = "Alex Kumar"; $published_date = "2026-07-15"; // New article publication date -$og_image = "https://ukdataservices.co.uk/assets/images/hero-data-analytics.svg"; -$twitter_card_image = "https://ukdataservices.co.uk/assets/images/hero-data-analytics.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; +$twitter_card_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; // Breadcrumb navigation $breadcrumbs = [ diff --git a/blog/articles/python-scrapy-enterprise-guide.php b/blog/articles/python-scrapy-enterprise-guide.php index ca7e934..b04541a 100644 --- a/blog/articles/python-scrapy-enterprise-guide.php +++ b/blog/articles/python-scrapy-enterprise-guide.php @@ -10,7 +10,7 @@ $article_author = "Michael Thompson"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/python-scrapy-enterprise-guide"; $article_published = "2025-05-15T09:00:00+00:00"; $article_modified = "2025-05-15T09:00:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/icon-web-scraping-v2.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 12; ?> @@ -117,10 +117,10 @@ $read_time = 12;
@@ -755,10 +755,10 @@ spec:

© UK Data Services. All rights reserved.

diff --git a/blog/articles/real-time-analytics-streaming.php b/blog/articles/real-time-analytics-streaming.php index dae1649..d9dacf5 100644 --- a/blog/articles/real-time-analytics-streaming.php +++ b/blog/articles/real-time-analytics-streaming.php @@ -1,178 +1,4 @@ - - - - - - <?php echo htmlspecialchars($article_title); ?> | UK Data Services Blog - - - - - - - - - - - - - - - -
-
- -

-

-
-
-
-
-

Real-time analytics transforms how businesses respond to opportunities and threats. This comprehensive guide covers streaming data architectures, real-time processing frameworks, and practical implementation strategies for UK enterprises.

- -

Understanding Real-Time Analytics

-

Real-time analytics processes data as it arrives, enabling immediate insights and automated responses. Unlike traditional batch processing, streaming analytics provides:

-
    -
  • Instant visibility: See events as they happen
  • -
  • Automated responses: Trigger actions based on real-time conditions
  • -
  • Competitive advantage: React faster than competitors
  • -
  • Operational efficiency: Prevent issues before they escalate
  • -
- -

Streaming Data Architecture

- -

Core Components

-
    -
  • Data Sources: Applications, IoT devices, databases, APIs
  • -
  • Stream Ingestion: Kafka, Kinesis, Pub/Sub
  • -
  • Stream Processing: Apache Flink, Spark Streaming, Kafka Streams
  • -
  • Data Storage: Time-series databases, data lakes, caches
  • -
  • Visualisation: Real-time dashboards and monitoring
  • -
- -

Technology Stack Recommendations

-
    -
  • Apache Kafka: Distributed streaming platform
  • -
  • Apache Flink: Low-latency stream processing
  • -
  • InfluxDB: Time-series data storage
  • -
  • Grafana: Real-time visualisation
  • -
  • Elasticsearch: Search and analytics engine
  • -
- -

Implementation Strategies

- -

Start with Use Cases

-

Identify high-value scenarios for real-time analytics:

-
    -
  • Fraud detection: Immediate transaction analysis
  • -
  • Operational monitoring: System health and performance
  • -
  • Customer experience: Real-time personalisation
  • -
  • Supply chain: Inventory and logistics tracking
  • -
- -

Data Quality Considerations

-
    -
  • Schema validation: Ensure data consistency
  • -
  • Error handling: Manage invalid or missing data
  • -
  • Backpressure: Handle varying data volumes
  • -
  • Monitoring: Track data flow and quality metrics
  • -
- -
-

"Real-time analytics isn't just about speed—it's about making data actionable at the moment of opportunity."

-

Learn more about our data cleaning service.

-
- -

Common Challenges and Solutions

- -

Latency Requirements

-

Different use cases require different latency levels:

-
    -
  • Hard real-time: < 1ms (financial trading)
  • -
  • Near real-time: < 100ms (fraud detection)
  • -
  • Soft real-time: < 1s (monitoring alerts)
  • -
  • Interactive: < 10s (dashboard updates)
  • -
- -

Scalability Planning

-
    -
  • Horizontal scaling: Add processing nodes
  • -
  • Partitioning: Distribute data load
  • -
  • Caching: Reduce computation overhead
  • -
  • Auto-scaling: Dynamic resource allocation
  • -
- -

Real-Time Dashboard Design

- -

Key Performance Indicators

-

Focus on metrics that drive immediate action:

-
    -
  • Alert thresholds: Define clear action triggers
  • -
  • Trend indicators: Show directional changes
  • -
  • Contextual information: Provide decision-making context
  • -
  • Historical comparison: Compare current vs. normal patterns
  • -
- -

Visualisation Best Practices

-
    -
  • Use appropriate chart types for time-series data
  • -
  • Implement colour coding for status indicators
  • -
  • Enable drill-down capabilities
  • -
  • Optimise for mobile viewing
  • -
- - - - - -
- - -
- - - - - - - \ No newline at end of file +header('HTTP/1.1 301 Moved Permanently'); +header('Location: https://ukdataservices.co.uk/blog/articles/real-time-analytics-streaming-data'); +exit; diff --git a/blog/articles/real-time-data-extraction-technical-guide-uk-businesses.php b/blog/articles/real-time-data-extraction-technical-guide-uk-businesses.php index d7c4fdc..06f4429 100644 --- a/blog/articles/real-time-data-extraction-technical-guide-uk-businesses.php +++ b/blog/articles/real-time-data-extraction-technical-guide-uk-businesses.php @@ -1,5 +1,5 @@ diff --git a/blog/articles/retail-price-monitoring-strategies.php b/blog/articles/retail-price-monitoring-strategies.php index 861109c..00bb453 100644 --- a/blog/articles/retail-price-monitoring-strategies.php +++ b/blog/articles/retail-price-monitoring-strategies.php @@ -10,7 +10,7 @@ $article_author = "David Martinez"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/retail-price-monitoring-strategies"; $article_published = "2025-06-03T09:00:00+00:00"; $article_modified = "2025-06-03T09:00:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/dashboard-ecommerce.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 10; ?> @@ -117,10 +117,10 @@ $read_time = 10;
@@ -308,10 +308,10 @@ $read_time = 10;

© UK Data Services. All rights reserved.

diff --git a/blog/articles/selenium-vs-playwright-comparison.php b/blog/articles/selenium-vs-playwright-comparison.php index 2c4eab2..f218a0b 100644 --- a/blog/articles/selenium-vs-playwright-comparison.php +++ b/blog/articles/selenium-vs-playwright-comparison.php @@ -3,14 +3,14 @@ header('Strict-Transport-Security: max-age=31536000; includeSubDomains'); // Article-specific SEO variables -$article_title = "Selenium vs Playwright: Which is Better in 2024?"; +$article_title = "Selenium vs Playwright: Which is Better in 2026?"; $article_description = "In-depth technical comparison of Selenium vs Playwright for web automation & scraping. We analyse speed, reliability, and ease of use to help you choose."; $article_keywords = "Selenium vs Playwright, web automation comparison, browser automation tools, Selenium Playwright performance, web scraping tools 2025"; $article_author = "Michael Thompson"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/selenium-vs-playwright-comparison"; $article_published = "2025-05-10T09:00:00+00:00"; $article_modified = "2025-05-10T09:00:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/icon-automation.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 9; ?> @@ -117,10 +117,10 @@ $read_time = 9;
@@ -485,10 +485,10 @@ run_scraper()

© UK Data Services. All rights reserved.

diff --git a/blog/articles/uk-cookie-law-compliance.php b/blog/articles/uk-cookie-law-compliance.php index 83c4b63..dd1f119 100644 --- a/blog/articles/uk-cookie-law-compliance.php +++ b/blog/articles/uk-cookie-law-compliance.php @@ -10,7 +10,7 @@ $article_author = "Sarah Chen"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/uk-cookie-law-compliance"; $article_published = "2025-05-12T09:00:00+00:00"; $article_modified = "2025-05-12T09:00:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/icon-compliance.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 8; ?> diff --git a/blog/articles/uk-property-market-data-trends.php b/blog/articles/uk-property-market-data-trends.php index 2d185da..1b15068 100644 --- a/blog/articles/uk-property-market-data-trends.php +++ b/blog/articles/uk-property-market-data-trends.php @@ -10,7 +10,7 @@ $article_author = "Emma Richardson"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/uk-property-market-data-trends.php"; $article_published = "2025-05-22T09:00:00+00:00"; $article_modified = "2025-05-22T09:00:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/dashboard-property.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 8; ?> @@ -116,10 +116,10 @@ $read_time = 8;
@@ -411,10 +411,10 @@ $read_time = 8;

© UK Data Services. All rights reserved.

diff --git a/blog/articles/web-scraping-compliance-uk-guide.php b/blog/articles/web-scraping-compliance-uk-guide.php index 5581f2f..a58d6cb 100644 --- a/blog/articles/web-scraping-compliance-uk-guide.php +++ b/blog/articles/web-scraping-compliance-uk-guide.php @@ -10,7 +10,7 @@ $article_author = "Sarah Chen"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/web-scraping-compliance-uk-guide"; $article_published = "2025-06-08T09:00:00+00:00"; $article_modified = "2026-03-08T00:00:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/icon-compliance.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 12; ?> @@ -761,10 +761,10 @@ $read_time = 12;

© UK Data Services. All rights reserved.

diff --git a/blog/articles/web-scraping-lead-generation-uk.php b/blog/articles/web-scraping-lead-generation-uk.php index ee14b66..54ad74c 100644 --- a/blog/articles/web-scraping-lead-generation-uk.php +++ b/blog/articles/web-scraping-lead-generation-uk.php @@ -8,7 +8,7 @@ $article_author = 'Emma Richardson'; $canonical_url = 'https://ukdataservices.co.uk/blog/articles/web-scraping-lead-generation-uk'; $article_published = '2026-03-08T09:00:00+00:00'; $article_modified = '2026-03-08T09:00:00+00:00'; -$og_image = 'https://ukdataservices.co.uk/assets/images/hero-data-analytics.svg'; +$og_image = 'https://ukdataservices.co.uk/assets/images/ukds-social-card.png'; $read_time = 10; ?> diff --git a/blog/articles/web-scraping-rate-limiting.php b/blog/articles/web-scraping-rate-limiting.php index 5cc5fd2..33e7349 100644 --- a/blog/articles/web-scraping-rate-limiting.php +++ b/blog/articles/web-scraping-rate-limiting.php @@ -10,7 +10,7 @@ $article_author = "Michael Thompson"; $canonical_url = "https://ukdataservices.co.uk/blog/articles/web-scraping-rate-limiting"; $article_published = "2025-04-28T09:00:00+00:00"; $article_modified = "2025-04-28T09:00:00+00:00"; -$og_image = "https://ukdataservices.co.uk/assets/images/icon-speed.svg"; +$og_image = "https://ukdataservices.co.uk/assets/images/ukds-social-card.png"; $read_time = 9; ?> @@ -115,10 +115,10 @@ $read_time = 9;
@@ -814,10 +814,10 @@ monitor.print_report()

© UK Data Services. All rights reserved.

diff --git a/index.php b/index.php index 96b0996..7e7166b 100644 --- a/index.php +++ b/index.php @@ -6,10 +6,8 @@ ini_set('session.cookie_httponly', '1'); ini_set('session.cookie_secure', '1'); session_start(); -// Prevent caching - page contains session-specific tokens -header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); -header("Pragma: no-cache"); -header("Expires: Sat, 01 Jan 2000 00:00:00 GMT"); +// Allow private caching with revalidation (CSRF token requires session) +header("Cache-Control: private, no-cache, must-revalidate"); if (!isset($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } @@ -18,7 +16,7 @@ header('Content-Security-Policy: default-src \'self\'; script-src \'self\' \'uns // SEO and performance optimizations $page_title = "UK Web Scraping Services | Custom Data Extraction Experts"; -$page_description = "Expert UK web scraping services. We deliver clean, structured data for competitor pricing, market research & leads. Fast, reliable & GDPR compliant. Free q"; +$page_description = "Expert UK web scraping services. We deliver clean, structured data for competitor pricing, market research & leads. GDPR compliant. Free quote."; $canonical_url = "https://ukdataservices.co.uk/"; $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, GDPR compliant scraping, enterprise data solutions, automated data collection UK"; $author = "UK Data Services"; diff --git a/locations/birmingham.php b/locations/birmingham.php index d2f0d4f..d0a6e43 100644 --- a/locations/birmingham.php +++ b/locations/birmingham.php @@ -10,6 +10,7 @@ $keywords = "web scraping Birmingham, data analytics Birmingham, data extraction // Breadcrumb navigation $breadcrumbs = [ ['url' => '/', 'label' => 'Home'], + ['url' => '/#services', 'label' => 'Services'], ['url' => '', 'label' => 'Birmingham'] ]; ?> diff --git a/locations/london.php b/locations/london.php index 0bd1bbb..7d2c5a3 100644 --- a/locations/london.php +++ b/locations/london.php @@ -10,6 +10,7 @@ $keywords = "web scraping London, data analytics London, data extraction London, // Breadcrumb navigation $breadcrumbs = [ ['url' => '/', 'label' => 'Home'], + ['url' => '/#services', 'label' => 'Services'], ['url' => '', 'label' => 'London'] ]; ?> diff --git a/locations/manchester.php b/locations/manchester.php index d8f4b1b..6a86fbf 100644 --- a/locations/manchester.php +++ b/locations/manchester.php @@ -10,6 +10,7 @@ $keywords = "web scraping Manchester, data analytics Manchester, data extraction // Breadcrumb navigation $breadcrumbs = [ ['url' => '/', 'label' => 'Home'], + ['url' => '/#services', 'label' => 'Services'], ['url' => '', 'label' => 'Manchester'] ]; ?> diff --git a/services/competitive-intelligence.php b/services/competitive-intelligence.php index ae00f8a..4349767 100644 --- a/services/competitive-intelligence.php +++ b/services/competitive-intelligence.php @@ -2,7 +2,7 @@ // Enhanced security headers header('Strict-Transport-Security: max-age=31536000; includeSubDomains'); -$page_title = "Competitive Intelligence Services | UK Market & Competito..."; +$page_title = "Competitive Intelligence Services UK | Market & Competitor Analysis"; $page_description = "Gain a competitive edge with our UK-based intelligence services. We deliver data-driven market research & competitor analysis. Request a free consultation."; $canonical_url = "https://ukdataservices.co.uk/services/competitive-intelligence"; $keywords = "competitive intelligence UK, competitor analysis, market intelligence, business intelligence, competitive analysis services, market research UK"; diff --git a/services/data-cleaning.php b/services/data-cleaning.php index d94a95c..9d22586 100644 --- a/services/data-cleaning.php +++ b/services/data-cleaning.php @@ -1,4 +1,6 @@