Osadzanie kanałów Atom na stronach WWW
Poprawne wysyłanie
Możesz sprawdzić obsługę cache za pomocą walidatora Cacheability Engine.
Poprawna obsługa HTTP (cache) jest niezmiernie ważna dla poprawnego działania kanałów. Jeśli nie zostanie zaimplementowana, to czytniki będą ściągały cały kanał za każdym jego sprawdzeniem obciążając łącze serwera i użytkowników.
Serwowanie zwykłego pliku
Jeśli kanał jest zapisywany w zwykłym pliku .xml serwowanym przez Apache, to serwer sam zajmie się obsługą cache na podstawie daty modyfikacji pliku. Natomiast Apache domyślnie nie ustawia kodowania
znaków w nagłówku Content-Type: text/xml
, co ogranicza XML do domyślnego kodowania US-ASCII, czego prolog <?xml?>
nie może zmienić.
Są dwa rozwiązania tego problemu:
-
Zmodyfikować konfigurację Apache dodając typ dla Atom (można to umieścić w pliku
.htaccess
):AddType application/atom+xml .atom
i zapisywać plik z rozszerzeniem .atom
- Nie używać znaków spoza US-ASCII (w szczególności polskich liter) bezpośrednio, a zapisywać je jako encje numeryczne, czyli w postaci
&#numer;
Serwowanie przez skrypt
W przypadku PHP konieczne jest ustawienie prawidłowego typu w nagłówku Content-Type
(charset
jest opcjonalny, ale
zalecany):
header('Content-Type: application/atom+xml; charset=UTF-8');
Dodatkowo gdy kanał jest generowany przez PHP (lub inny skrypt CGI) należy napisać własną obsługę cache, czyli np. obsługę Last-Modified
i If-Modified-Since
. Do tego przyda się
PEAR::Cache lub lektura RFC 2616.
PHP ma ustawienie session cache limiter, które jest absolutnie dewastujące dla cache HTTP i przy serwowaniu kanałów koniecznie
trzeba je wyłączyć (ustawić none
).
Sposoby odkrywania kanału przez użytkowników (ang. feed discovery)
Automatyczne (ang. autodiscovery)
Element <link>
:
<link rel="alternate" type="application/atom+xml" href="/kanal.xml" title="Kanał informacyjny" />
Odnośnik na stronie
Umieszczając zwykły odnośnik na stronie WWW:
<a rel="alternate" type="application/atom+xml" href="/kanal.xml">Kanał informacyjny</a>
Zaleca się dodanie do niego standardowej ikony.
Pytania? Komentarze? Napisz na forum kursu lub edytuj tę stronę.
Zmodyfikowano: 19.05.2007, 14:34