Osadzanie kanałów Atom na stronach WWW

Poprawne wysyłanie

Możesz sprawdzić obsługę cache za pomocą walidatora Cacheability Engine (alternatywna strona, gdyby poprzednia nie działała).

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:

  1. Zmodyfikować konfigurację Apache dodając typ dla Atom (można to umieścić w pliku httpd.conf lub .htaccess) i typ dla XML (application zamiast text):

      AddType application/atom+xml .atom
      AddType application/xml .xml
    

    i zapisywać plik z rozszerzeniem .atom

    Od teraz domyślnym kodowaniem będzie UTF-8, lub jeśli ustawione jest kodowanie znaków <?xml?>, nim będzie to kodowanie, lub jeśli w nagłówku HTTP, nim będzie to kodowanie.
  2. 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');

Dodatkowo gdy kanał jest generowany przez PHP (lub inny skrypt CGI) należy napisać własną obsługę cache, czyli np. obsługę Last-ModifiedIf-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.atom" 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.atom">Kanał informacyjny</a>

Zaleca się dodanie do niego standardowej ikony.


Zmodyfikowano: 30.08.2011, 11:14
submit