1

スポーツをベースにしたツイッターとフェイスブックのミックスのようなソーシャルネットワークを開発しています。Post(id、user_id、receiver_id、message、created_at)というモデルがあり、Postビューをキャッシュしたいと思います。

app / views / posts / _post.haml

- cache post do
  %div
    .author= link_to post.user.full_name, post.user
    .message= post.message
    .timestamp= timestamp_for_post(post.created_at)

昨日はすべて完全に機能しましたが、「ホームフィード」にアクセスすると、タイムスタンプがキャッシュされていることに気付きました。例を示しましょう:

ベルナカストロ
テスト
1分以内-コメント小道具削除

「1分未満前」ではなく、「昨日」と表示する必要があります。タイムスタンプをキャッシュしない方法はありますか?それを修正するために何をお勧めしますか?

タイムスタンプを取得するためにAJAX呼び出しを行うことを考えましたが、それは非常に奇妙で良くありません。

4

2 に答える 2

1

相対タイムスタンプをレンダリングする代わりに、テンプレートで実際の非相対タイムスタンプをレンダリングしてから、 Moment.jsなどを使用してクライアント側の相対タイムスタンプに変換します。

これには、相対的なタイムスタンプが変更されるのに十分な時間、ユーザーがページを開いている場合にタイムスタンプが自動的に更新されるという利点もあります。

また、サイトの速度が遅いことを実際に理解するまで、何もキャッシュしないことを検討する必要があります。キャッシングにはこのような落とし穴がたくさんあり、時期尚早の最適化は必ずしも価値があるとは限りません。

于 2013-01-19T15:58:32.770 に答える
0

タイムスタンプをキャッシュブロックから移動するだけです

  %div
   - cache post do
      .author= link_to post.user.full_name, post.user
      .message= post.message
   .timestamp= timestamp_for_post(post.created_at)
于 2013-01-22T22:48:11.087 に答える