Sitemap Extractor: optimize download & parsing (streaming XML, gzip, keep-alive, concurrent child fetch, incremental skip, dedupe)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- typescript
- Área
- backend, performance
Línea de trabajo
Start by locating the sitemap download and parsing path in the TypeScript project; the issue does not name specific files or tests. Read that implementation and check how it handles sitemap indexes, child fetches, and repeat runs. The proposed work spans streaming parsing, transport behavior, concurrency, deduplication, and conditional requests; done means faster, lower-memory enumeration and fewer timeouts without excessive per-host concurrency.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
Independent of the overlap change (#339), the sitemap download/parse path itself can be made substantially faster and lighter for large sitemap trees.
Context
Same 500-domain test as #339 (250 most-popular + 250 random domains, Apr–Jun 2026). Large sites carry sitemap indexes referencing hundreds of child sitemaps, each up to 50k URLs. 448,562 pages were enumerated across the test; the largest sites timed out at 1h primarily in the sitemap phase.
Proposed optimizations
- Streaming XML parsing (SAX, e.g.
sax/saxes) instead of buffering + DOM-parsing each child sitemap — lower memory and faster time-to-first-URL on 50k-entry files. - Guarantee gzip transfer (
Accept-Encoding: gzip) with transparent decompression — sitemaps are frequently served as.xml.gz; large savings on the wire. - HTTP keep-alive / connection reuse (shared agent) across the many child-sitemap requests to the same host.
- Concurrent child-sitemap fetching with a bounded pool (also enables the overlap in #339).
- Dedupe child-sitemap URLs — indexes commonly list duplicates.
- Incremental skip via sitemap-index
<lastmod>: skip child sitemaps unchanged since the previous run usingIf-Modified-Since/If-None-Match(conditional GET). Big win for re-crawls, and foundational for a future "crawl only new content" feature. - Bound per-host concurrency to avoid anti-bot triggers.
Expected impact
Faster sitemap enumeration, lower memory footprint, fewer timeouts on large sites, and materially cheaper re-crawls.
🤖 Filed from a data-driven analysis with Claude Code, based on a 500-domain Sitemap Extractor test (Apr–Jun 2026).
- Lenguaje dominante
- TypeScript
- Estrellas
- 149
- Forks
- 59
- Merge medio
- 9 d 13 h
- PR fusionados (30 d)
- 3
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apify/actor-scraper
-
t-universe
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
apify/actor-scraper#366 · 1 comentario ·
-
t-universe
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
apify/actor-scraper#365 · 1 comentario ·
-
t-universe
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
apify/actor-scraper#362 · 2 comentarios ·
-
Fix updating changelogs for generic scrapersPosiblemente ocupada @nikitachapovskii-dev la tomó hace 9 días. Abiertot-universe
apify/actor-scraper#359 · 1 asignado ·
-
Sitemap Extractor: fall back to Apify Unblocker when sitemap/robots.txt fetch is blocked (HTTP 403)Abiertot-universe
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
apify/actor-scraper#341 · 1 comentario ·
Todos los issues de apify/actor-scraper
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
vercel/streamdown#673 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
docs(stream-protocol): document messageMetatadata on start/finish and the message-metadata chunkPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertofactory-active task-identify-harness-labels-done task-identify-issue-type-done
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
vercel/ai#23375 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
agilepathway/label-checker#721 ·
Los mantenedores suelen responder en 1 día
-
CLI Empathy needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
chromaui/chromatic-cli#1524 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día