Ecrire un feed rss et le mettre en cache

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 344 fois - Téléchargée 37 fois

Contenu du snippet

Vous avez un site, et vous aimerez lui ajouter un feed RSS pour afficher les derniers articles ? rien de plus simple grace à la librairie RSS.net !

La site du projet RSS.net est ici www.rssdotnet.com il y a sur le site des exemples qui vont montreront comment demarrer ici : http://www.rssdotnet.com/documents/code_examples.html et pour telecharger cette dll c'est ici : http://rss-net.sourceforge.net/RSS.NET.tar.gz . Et oui, il vous faut compiler le code pour recuper la dll.

La page d'exemple est suffisamment bien faites pour me passer d'un exemple, mais la librairie est hyper simple d'utilisation.

Ce qui est par contre un peu plus interessant, c'est la mise en cache du feed. Je pensais rajouter un bête
<%@ OutputCache Duration="20" VaryByParam="none" %>
au dessous de la directive page, mais non ! ca n'a pas voulu marcher, surement car on efface toute la page dans le code.

On va donc utiliser une autre solution, l'objet Cache.
Comment cela fonctionne ? tout betement evidemment
Cache.insert("clé de la variable", objet, CacheDepency, Date d'expiration, durée de vie relative)
les deux premiers paramètres n'ont pas besoin d'explication, le 3ème sert à actualier le cache, si l'objet passé en paramètre change, le 4eme et la date d'expiration, et le dernier param actualise le feed si le cache n'a pas été chargé depuis ce temps. un exemple vous avez mis 5 min, on se sert du cache 6min apres la derniere fois qu'il a servis on le reactualise et est bon pour au moins 5 min, on va voir le cache 4 min apres, on ne reactualise pas le cache, et il ne sera pas actualisé avant 5min.

pour lire le cache c'est tout simplement
objet = cache("clé")

Pour le code ci dessous, j'ai repris le code de l'exemple est rajouté un cache de 20min

Source / Exemple :


Dim channel As New RssChannel
        channel.LastBuildDate = Now.ToUniversalTime
        channel.Language = "Fr"
        channel.Title = "My channel's title"
        channel.Description = "My channel's description"

        Dim feed As RssFeed

        If Me.Cache("feedTwentyLatestNews") Is Nothing Then

            Dim row As ExampleData.NewsRow

            For Each row In exampleData.News.Rows
                Dim item As New RssItem

                item.Title = row.news_title
                item.Description = row.news_description
                item.PubDate = row.news_date.ToUniversalTime

                channel.Items.Add(item)
            Next

            feed = New RssFeed
            feed.Channels.Add(channel)
            feed.Encoding = System.Text.Encoding.Default
            Me.Cache.Insert("feedTwentyLatestNews", feed, Nothing, New Date(Now.Ticks + New TimeSpan(0, 20, 0).Ticks), New TimeSpan(0))
        Else
            feed = CType(Me.Cache("feedTwentyLatestNews"), RssFeed)
        End If

        Response.ContentType = "text/xml"
        feed.Write(Response.OutputStream)
        Response.End()

Conclusion :


Pour ajouter la dll, dans votre site web, il vous faut la mettre dans le repertoire bin de l'application web, sous VS.net cliquer droit sur reference puis ajouter une reference, parcourir jusqu'a la dll, et c'est bon.

n'hésiter pas à laisser vos commentaires

A voir également

Ajouter un commentaire Commentaire
cs_jcq
Messages postés
211
Date d'inscription
vendredi 12 décembre 2003
Statut
Membre
Dernière intervention
15 janvier 2010

11 mai 2005 à 14:13
J'ai téléchargé le package RSS.net et essayé de le compiler mais j'ai une erreur 'Echec cryptographique pendant la signature de l'assembly'.... Erreur lors de la lecture du fichier de clé ..\..\rss.snk

As-tu eu la même chose ?

merci

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.