■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

外部RSSを表示する場合のベストプラクティス

shin > 外部RSSを表示する場合のベストプラクティス @ 2011/12/12 13:15
こんにちは。

BaserCMSでは内部のRSSはAjaxで読みこめば最新が表示されるようですが、外部(ドメインが異なる)サイトの場合はどうするのが良いのか、お尋ねしたく思っております。

http://forum.basercms.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=327&forum=5
上記トピックでは、Ajaxで読みこめばよいという結論になっています。
が、実際にはクロスドメイン制約のために、自サーバを経由する必要があり、経由部分でまたキャッシュされてしまい、という事態に陥りました※。

私の場合は、とりあえず、
「BaserCMSのキャッシュ機能をOFFにする方法」http://blog.cgfm.jp/garyu/archives/2380
のように、キャッシュを無効にして対処しておりますが、もっと良い方法はありますでしょうか?

よろしくお願いします。

#試してはいないのですが、webrootに直接、スクリプトを置けばキャッシュされなかったりしますでしょうか?
#※では、layout/*.ctpで無理やりクエリを処理したためにキャッシュされたのかなと、ふと思いまして。

■ BaserCMSのバージョン:1.6.15
■ PHPスキル(自己評価):c

arata > Re: 外部RSSを表示する場合のベストプラクティス @ 2011/12/15 22:51
shinさん、こんにちは!

確かにクロス・ドメインの対策はむつかしいところですねー。
フィード取得自体をPHPでやってしまう、とかどうでしょうか?
キャッシュ処理に関しては、その中で何らかの条件分岐を使う。。。とか?

何か思いついたらまた書きますね!

■ 不明点解消できるかも。逆引きガイドもあります baserCMS公式wiki
■ Twitter:@arata

shin > Re: 外部RSSを表示する場合のベストプラクティス @ 2011/12/18 1:46
「#試してはいないのですが、webrootに直接、スクリプトを置けばキャッシュされなかったりしますでしょうか?」
について自分で調べましたので、ご報告いたします。

結論から言えば、webroot以下のスクリプトはキャッシュされませんでした。
#ルーティング以外はシステム内部を経由しないためだと思います。

また、あるページ(管理画面から作成)で
・includeで読み込む
・file_get_contentsで読み込む
・Ajaxで読み込む(jQuery.load)
の3パターンを試したところ、予想通り、Ajaxで読み込む場合以外では、キャッシュされました。

以上から、
・外部(ドメインの異なる)サイトのページ(RSS・WebAPIなども含む)を呼び出したい場合はAjaxを使う。
・Ajaxで呼び出すサーバーサイドスクリプトは(themed以下ではなく)webroot以下に配置する。
という結論になりそうです。


to. arataさん
返答有り難うございます。

>フィード取得自体をPHPでやってしまう、とかどうでしょうか?
そもそも、外部フィードはJavaScriptではクロスドメイン制約のためにできないので、PHPなどを利用する以外に方法は無いと思われます。
#外部サイトがJSONPに対応しているとかなら話は別ですが。。。

>キャッシュ処理に関しては、その中で何らかの条件分岐を使う。。。とか?
???
BaserCMSにキャッシュを操作する方法があるのでしょうか?


ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
12 人のユーザが現在オンラインです。 (11 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 12