Чому стандартні плагіни jekyll далекі від ідеалу
У цій статті я не буду наводити повний код для всіх компонентів, тільки дам сніпети та підказки, на що варто звернути увагу при складанні сайту на jekyll.
Час модифікації файла
Кожна сторінка має щонайменше три точки відображення позначки часу в різних файлах, елементах сторінки або відповіді сервера, і всі вони повинні бути однаковими.
- ld+json
"dateModified": "2025-03-07T15:43:42+00:00" - sitemap
<lastmod>2025-03-07T15:43:42+00:00</lastmod> - headres
last-modified: Fri, 07 Mar 2025 15:43:42 GMT
Почнемо з sitemap.xml, у стандартному jekyll-sitemap, для сторінок page, які на цьому сайті використовуються для виведення collections, час зміни береться з часу зміни файлу.
Тобто для сторінки https://webart4.me/en/linux/blog/
буде встановлено час зміни файлу /categories/en/blog.md:
{{ page.last_modified_at | date_to_xmlschema }}, а це не зовсім правильно.
Тому що, при модифікації, а головне при додаванні нової публікації в цій категорії (колекції), час зміни
Тому, вибираємо всі публікації для даної локалі, потім ті, які відносяться до цієї категорії, сортуємо за датою, вибираємо найновішу.
1 2 3 4 5 6 | |
Відповідно, для генерації Structured Data буде така сама логіка.
Відповідь сервера Last-Modified
Тут вже цікавіше.
При пересборі сайту jekyll build --destination файли будуть оновлені. Навіть якщо використовувати --incremental, все одно не вдасться перенести коректні атрибути файлів, враховуючи, що для деяких файлів вони повинні мати генеровані значення.
Для цього використовуємо витончений та простий скрипт, який має запускатися після кожного деплою на сервері.
nano touch_files.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | |
Скрипт парсить sitemap.xml, і для всіх файлів з <loc> встановлює <lastmod>.