Как мне сделать curl -IL для всех страниц сайта, начиная с корневой страницы, а не только для одной страницы за раз?

Как мне сделать curl -IL для всех страниц сайта, начиная с корневой страницы, а не только для одной страницы за раз?

Мне нужно запустить curl -IL на всем сайте и, возможно, запускать cron-задание или что-то в этом роде каждые 24 часа, чтобы fastcgi мог кэшировать все страницы навго

Кэш не срабатывает, пока я не применю curl -IL к веб-странице, поэтому мне нужно что-то, что свернёт все веб-страницы, доступные на сайте.

Как вы можете видеть ниже:

root@ubuntu-s-1vcpu-1gb-amd-sfo3-01:~# curl -IL https://www.example.com
HTTP/2 200 
date: Thu, 23 Feb 2023 10:31:44 GMT
content-type: text/html; charset=UTF-8
link: <https://www.example.com/wp-json/>; rel="https://api.w.org/"
link: <https://www.example.com/wp-json/wp/v2/pages/16274>; rel="alternate"; type="application/json"
link: <https://www.example.com/>; rel=shortlink
x-fastcgi-cache: HIT
cf-cache-status: DYNAMIC
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=2K%2BxMLMMrvGpe%2FdpG38gU%2FKaBPBAL5I3rYNL5ATQ65wPM2qMnQmaCe2jLx88N%2B%2BHeUw1RRI5EnrYh9%2F6P5fj7xAipg%2FnOxi4IV8e4IqPWMyANW9JnKndXGfBZw0r3LtF1IEl"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
server: cloudflare
cf-ray: 79df4b241af32f15-LAX
alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400

решение1

Это WordPress, который вы там используете. Я уверен, что есть лучшие способы разогреть кэш:https://de.wordpress.org/plugins/search/cache+warm/

Создайте файл типа warmup.sh со следующим кодом

#!/bin/bash

# URL of main Sitemap
sitemap_url="https://www.vgopromo.com/wp-sitemap.xml"

# Extract all Sitemap URLs
sitemap_urls=$(curl -s "$sitemap_url" | grep -oP '(?<=<loc>)[^<]+')

# Loop over and retrieve the individual URLs
for sitemap in $sitemap_urls; do
    urls=$(curl -s "$sitemap" | grep -oP '(?<=<loc>)[^<]+')
    for url in $urls; do
        curl -IL "$url"
    done
done

Это сделает то, что вы просили.

Вы также можете запустить этот файл с помощью Cronjob.

# Example: At minute 15 past every hour.
15 */1 * * * /bin/bash /root/warmup.sh

РЕДАКТИРОВАТЬ

Этот измененный код добавляет возможность определять также поддомены.

#!/bin/bash

# Array of Subdomains, just extend in same princip
subdomains=("www" "subdomain_2")

# Loop over Subdomains and retrieve URLs
for subdomain in "${subdomains[@]}"; do
    sitemap_url="https://$subdomain.vgopromo.com/wp-sitemap.xml"
    sitemap_urls=$(curl -s "$sitemap_url" | grep -oP '(?<=<loc>)[^<]+')
    for sitemap in $sitemap_urls; do
        urls=$(curl -s "$sitemap" | grep -oP '(?<=<loc>)[^<]+')
        for url in $urls; do
            curl -IL "$url"
        done
    done
done

Я лично предлагаю этот способ. Делает его совместимым с несколькими проектами.

#!/bin/bash

# Array of Domains, just extend in same princip
domains=("https://www.vgopromo.com/wp-sitemap.xml" "https://example.vgopromo.com/wp-sitemap.xml")

# Loop over Domains and retrieve URLs
for domain in "${domains[@]}"; do
    sitemap_url="$domain"
    sitemap_urls=$(curl -s "$sitemap_url" | grep -oP '(?<=<loc>)[^<]+')
    for sitemap in $sitemap_urls; do
        urls=$(curl -s "$sitemap" | grep -oP '(?<=<loc>)[^<]+')
        for url in $urls; do
            curl -IL "$url"
        done
    done
done

Связанный контент