Para disminuir el tiempo de generación se podría usar otro lenguaje de programación más eficiente que Python, como Rust. Hay un programa para generar sitios web estáticos llamado Zola que permite generar sitios multilingües.
El sitio web tarda bastante en generarse:
```
Done: Processed 33 articles, 0 drafts, 0 hidden articles, 2 pages, 9 hidden pages and 0 draft pages in
2.40 seconds.
Done: Processed 35 articles, 0 drafts, 0 hidden articles, 2 pages, 9 hidden pages and 0 draft pages in
4.51 seconds.
Done: Processed 81 articles, 0 drafts, 0 hidden articles, 3 pages, 9 hidden pages and 0 draft pages in
7.22 seconds.
Done: Processed 34 articles, 0 drafts, 0 hidden articles, 1 page, 19 hidden pages and 0 draft pages in
9.26 seconds.
Done: Processed 1 article, 0 drafts, 0 hidden articles, 0 pages, 19 hidden pages and 0 draft pages in
11.03 seconds.
Done: Processed 185 articles, 0 drafts, 0 hidden articles, 3 pages, 8 hidden pages and 0 draft pages in
17.83 seconds.
```
Para disminuir el tiempo de generación se podría usar otro lenguaje de programación más eficiente que Python, como Rust. Hay un programa para generar sitios web estáticos llamado [Zola](https://www.getzola.org/) que permite generar sitios multilingües.
El tiempo de generación con Zola se reduce un montón:
Building site...
Checking all internal links with anchors.
> Successfully checked 9 internal link(s) with anchors.
-> Creating 370 pages (0 orphan) and 5 sections
Done in 614ms.
Para migrar los metadatos de los artículos al formato de Zola se puede usar el siguiente programa:
#!/usr/bin/env python3
import os
import re
direct ='/var/www/html/Repositorios/Freak-Spot/content/'
for file in os.listdir(direct):
if os.path.isfile(os.path.join(direct, file)) and file[-3:] == '.md':
with open(os.path.join(direct, file)) as f:
lineas = f.read()
rc_title = re.compile('Title: (.*)')
r_title = rc_title.search(lineas)
title = r_title.group(1)
rc_autor = re.compile('Author: (.*)')
r_autor = rc_autor.search(lineas)
autor = r_autor.group(1)
rc_categoria = re.compile('Category: (.*)')
r_categoria = rc_categoria.search(lineas)
categoria = r_categoria.group(1)
rc_etiquetas = re.compile('Tags: (.*)')
r_etiquetas = rc_etiquetas.search(lineas)
etiquetas = r_etiquetas.group(1)
rc_date = re.compile('Date: ([0123456789-]+) ([0123456789:]+)')
r_date = rc_date.search(lineas)
if not r_date:
rc_date = re.compile('Date: ([0123456789-]+)')
r_date = rc_date.search(lineas)
date = r_date.group(1) + 'T00:00:00Z'
else:
date = r_date.group(1) + 'T' + r_date.group(2) + ':00Z'
rc_updated = re.compile('Modified: ([0123456789-]+) ([0123456789:]+)')
r_updated = rc_updated.search(lineas)
is_updated = False
if not r_updated:
rc_updated = re.compile('Modified: ([0123456789-]+)')
r_updated = rc_updated.search(lineas)
if r_updated:
updated = r_updated.group(1) + 'T00:00:00Z'
is_updated = True
else:
if r_updated:
updated = r_updated.group(1) + 'T' + r_updated.group(2) + ':00Z'
is_updated = True
rc_url = re.compile('URL: (.*)/')
r_url = rc_url.search(lineas)
if not r_url:
rc_url = re.compile('Slug: (.*)')
r_url = rc_url.search(lineas)
url = r_url.group(1)
lista_etiq = etiquetas.split(',')
texto = ''
limite = False
lineas_list = lineas.splitlines()
for linea in lineas_list:
if not linea:
limite = True
if limite:
texto += linea + '\n'
cabecera = '---\n'
cabecera += "title: '{}'".format(title) + '\n'
cabecera += 'slug: "{}"'.format(url) + '\n'
cabecera += 'date: "{}"'.format(date) + '\n'
if is_updated:
cabecera += 'updated: "{}"'.format(updated) + '\n'
cabecera += 'taxonomies:' + '\n'
cabecera += ' autor:' + '\n'
cabecera += ' - ' + autor + '\n'
cabecera += ' etiqueta:' + '\n'
for etiq in lista_etiq:
cabecera += ' - ' + etiq.lstrip() + '\n'
cabecera += ' categoría:' + '\n'
cabecera += ' - ' + categoria + '\n'
cabecera += '---'
salida = open('pelican/' + file, 'w')
salida.write(cabecera + texto)
salida.close()
El tiempo de generación con Zola se reduce un montón:
```
Building site...
Checking all internal links with anchors.
> Successfully checked 9 internal link(s) with anchors.
-> Creating 370 pages (0 orphan) and 5 sections
Done in 614ms.
```
Para migrar los metadatos de los artículos al formato de Zola se puede usar el siguiente programa:
```
#!/usr/bin/env python3
import os
import re
direct ='/var/www/html/Repositorios/Freak-Spot/content/'
for file in os.listdir(direct):
if os.path.isfile(os.path.join(direct, file)) and file[-3:] == '.md':
with open(os.path.join(direct, file)) as f:
lineas = f.read()
rc_title = re.compile('Title: (.*)')
r_title = rc_title.search(lineas)
title = r_title.group(1)
rc_autor = re.compile('Author: (.*)')
r_autor = rc_autor.search(lineas)
autor = r_autor.group(1)
rc_categoria = re.compile('Category: (.*)')
r_categoria = rc_categoria.search(lineas)
categoria = r_categoria.group(1)
rc_etiquetas = re.compile('Tags: (.*)')
r_etiquetas = rc_etiquetas.search(lineas)
etiquetas = r_etiquetas.group(1)
rc_date = re.compile('Date: ([0123456789-]+) ([0123456789:]+)')
r_date = rc_date.search(lineas)
if not r_date:
rc_date = re.compile('Date: ([0123456789-]+)')
r_date = rc_date.search(lineas)
date = r_date.group(1) + 'T00:00:00Z'
else:
date = r_date.group(1) + 'T' + r_date.group(2) + ':00Z'
rc_updated = re.compile('Modified: ([0123456789-]+) ([0123456789:]+)')
r_updated = rc_updated.search(lineas)
is_updated = False
if not r_updated:
rc_updated = re.compile('Modified: ([0123456789-]+)')
r_updated = rc_updated.search(lineas)
if r_updated:
updated = r_updated.group(1) + 'T00:00:00Z'
is_updated = True
else:
if r_updated:
updated = r_updated.group(1) + 'T' + r_updated.group(2) + ':00Z'
is_updated = True
rc_url = re.compile('URL: (.*)/')
r_url = rc_url.search(lineas)
if not r_url:
rc_url = re.compile('Slug: (.*)')
r_url = rc_url.search(lineas)
url = r_url.group(1)
lista_etiq = etiquetas.split(',')
texto = ''
limite = False
lineas_list = lineas.splitlines()
for linea in lineas_list:
if not linea:
limite = True
if limite:
texto += linea + '\n'
cabecera = '---\n'
cabecera += "title: '{}'".format(title) + '\n'
cabecera += 'slug: "{}"'.format(url) + '\n'
cabecera += 'date: "{}"'.format(date) + '\n'
if is_updated:
cabecera += 'updated: "{}"'.format(updated) + '\n'
cabecera += 'taxonomies:' + '\n'
cabecera += ' autor:' + '\n'
cabecera += ' - ' + autor + '\n'
cabecera += ' etiqueta:' + '\n'
for etiq in lista_etiq:
cabecera += ' - ' + etiq.lstrip() + '\n'
cabecera += ' categoría:' + '\n'
cabecera += ' - ' + categoria + '\n'
cabecera += '---'
salida = open('pelican/' + file, 'w')
salida.write(cabecera + texto)
salida.close()
```
Cambiar de generador no es nada fácil. Zola no permite hacer algunas cosas que con Pelican sí puedo:
Complementos para internacionalizar el sitio web (gettext)
Complemento para crear nube de etiquetas
Complemento para acceder a artículos adyacentes
Cambiar de generador no es nada fácil. Zola no permite hacer algunas cosas que con Pelican sí puedo:
- Complementos para internacionalizar el sitio web (gettext)
- Complemento para crear nube de etiquetas
- Complemento para acceder a artículos adyacentes
Cuando añado código más complejo en el tema, similar al que se usa con Pelican, el ahorro en la generación del sitio no supone demasiado:
Checking all internal links with anchors.
> Successfully checked 9 internal link(s) with anchors.
-> Creating 370 pages (0 orphan) and 5 sections
Done in 7.3s.
Quizá lo mejor sería usar un lenguaje del lado del servidor y usar caché.
Cuando añado código más complejo en el tema, similar al que se usa con Pelican, el ahorro en la generación del sitio no supone demasiado:
```
Checking all internal links with anchors.
> Successfully checked 9 internal link(s) with anchors.
-> Creating 370 pages (0 orphan) and 5 sections
Done in 7.3s.
```
Quizá lo mejor sería usar un lenguaje del lado del servidor y usar caché.
El sitio web tarda bastante en generarse:
Para disminuir el tiempo de generación se podría usar otro lenguaje de programación más eficiente que Python, como Rust. Hay un programa para generar sitios web estáticos llamado Zola que permite generar sitios multilingües.
El tiempo de generación con Zola se reduce un montón:
Para migrar los metadatos de los artículos al formato de Zola se puede usar el siguiente programa:
Cambiar de generador no es nada fácil. Zola no permite hacer algunas cosas que con Pelican sí puedo:
Cuando añado código más complejo en el tema, similar al que se usa con Pelican, el ahorro en la generación del sitio no supone demasiado:
Quizá lo mejor sería usar un lenguaje del lado del servidor y usar caché.