cosian.com

ローカルストレージを活用した「いいね」の処理(備忘録)

2019-07-03

system

■現在の仕様
cosian.comに新しいユーザーが訪問する(cookie情報を見て判断)と、ユーザーID、パスワードを自動発行しDBに自動登録する。
「いいね」を押すと、そのユーザーのIDでDBのfavoriteテーブルにいいね情報を書き込む(Ajaxと絡めて構築)。

■現在の仕様での課題
訪問者はユーザーというより大半がbotやクローラー。除外の処理はしているもののいたちごっこ。DBのuserテーブルは増加の一途となっている。

■解決方法
これまではDB上「誰が」「どの記事に」いいねをしたかを保存しておかないと、次に訪問されたときに「いいね」の情報を付与することができなかった。
しかしローカルストレージを使うことで、ユーザー情報は不要になり(その人のローカルにあるので)、「いいね」をした情報だけをローカルストレージに蓄積する。つまり、記事IDのみをローカルストレージで保有すればことが足りる。

■細かい処理
「いいね」を押したときに、ローカルストレージのkey:favorito、value:配列で記事ID、を追加するJavascriptを記述する。
同時に、DBのpostテーブルのfavoriteカラムの値を 1してUPDATEする。
もう一度「いいね」を押し削除した場合は、ローカルストレージのvalueの配列より記事IDをremoveし、同時にDBのpostテーブルのfavoriteカラムの値を 1する。
記事一覧、記事詳細表示時にローカルストレージを参照し、記事IDがvlueの配列内にあれば「いいね」状態にする。
ユーザー情報との紐づけも不要なため、favoriteテーブルも不要になる。

■問題点
誰が、どの記事に「いいね」をしたかの管理が出来なくなる。
不特定多数の方に「いいね」してもらう場合は、この仕様で問題ないが、ユーザー登録を行い「いいね」する場合は今まで通りfavoriteテーブルは残しておいた方が良い。

コメントを書く
コメント
お名前