キャッシュとクッキー、セッションについて
結論
- キャッシュは動的ページを実現するためのものでは無く、
画面表示の高速化を目的に画像やHTMLデータをブラウザに保持する。 - セッションは「ログインしてからログアウトまで」のような一連の操作を言い、
セッションデータはサーバー側に保持される。 - クッキーはクライアントのパソコン(WEBブラウザ)でデータを管理しており、
有効期限が切れるまで保持している。
[目次]
前提知識
HTTP通信について
HTTP通信とは?
通常WEBブラウザでWEBサイトを閲覧する場合にはHTTPという通信手段を用いて
サーバーとクライアント間を通信する。
そのHTTP通信は、HTML文書の通信を目的に作られており、
1つのURLに対し同じページを返すことしか出ません。(これを静的と言います。)
しかし、ショッピングサイトのカートや、ログインしたら見れるようなサイトなどは、
ユーザーの状態によって表示する内容が変化します。(これを動的と言う。)
こういったHTTPの弱点とも言える部分を解決したものがクッキーやセッションである。
クッキーやセッションは状態を持ちまわることで、何度画面遷移をしても、数日後にサイトを再度開いても、現在の状態の操作が行えるようになる。
ではクッキーとセッションは何が違うのか?また、キャッシュとは何なのでしょうか?
キャッシュとは?
- 閲覧したサイトのデータの一時保存のこと
- 一度見たwebサイトのデータをパソコンの中に一時的に保存しておく機能のことを言う
- 再度アクセスした時にその保存したデータを表示させることで、より早くスムーズに処理がされる
- 画像やHTMLのデータなどをクライアント(インターネットを閲覧する人)側のブラウザに保存することにより表示速度を向上させるもの
- 同じページを何度も開いた場合に、同じ画像やHTML,CSS,javascriptなどのデータを何度もダウンロードする必要は無いため、ブラウザに自動的に保存されるというものです。
- 使用者はクライアント
セッションとは?
- セッションは一連の操作のこと。Cookieを使用してセッションIDの管理が行われている。
- セッションのデータは「セッションID=ログイン情報」としての役割がある。
- セッションはログイン情報を保持する役割がある。
クッキーとは?
- クッキーとは、Webサイトを表示したブラウザのデータを保存しておく仕組みのことです。
- ユーザーの購買履歴や、利用している地域などがわかる会員証のようなものとよく例えられます。
- 2回目以降同じサイトに訪れる際は、初めてレスポンスを受けとる際に付与されたクッキー(会員証)を元にサーバーがブラウザを特定します。
それによりユーザーに合ったコンテンツを効率的に表示できる機能です。
主な用途
- ECサイトなどでの購入履歴やカートのデータの保存
- ログイン時のIDやパスワードの保存
- ユーザーのアクセス履歴にマッチした広告などを表示
クッキーのメリット
ユーザーサイド
- 何度もログインしなくて済む
- ブラウジングを効率化できる
企業サイド
- ユーザーに合わせた情報を提供できる
- サイト内でのユーザーの行動を管理できる
- マーケティングに活用できる
クッキーのデメリット
ユーザーサイド
- 情報が漏洩する可能性がある
- データが蓄積されすぎるとブラウザの動作が遅くなることがある
企業サイド
- トラッキングクッキーなどはユーザーに不快な印象を与える場合がある
mysqldumpの設定で詰まった話
dumpファイルの作り方
学ぶ目的
- 毎回データを作るのは面倒。再利用したい。
- 作業改善のため
$ mysqldump -h localhost [DB名] [テーブル名] -u root -p > simple.dump $ mysql -h localhost [DB名] -u root -p < simple.dump
とすべきコード、2つ目を
$ mysqldump -h localhost [DB名] -u root -p < simple.dump
dumpを間違えてつけてしまった。 割とよくあるミスらしい。
- 今日の学び
- dumpファイルの作り方がわかった。
(&:odd?)について
> a, = (1..5).partition(&:odd?) => [[1, 3, 5], [2, 4]] > a = (1..5).partition(&:odd?) => [[1, 3, 5], [2, 4]] > a, b = (1..5).partition(&:odd?) => [[1, 3, 5], [2, 4]] > b => [2, 4]
> a, = (1..5).partition(&:odd?)
↑なぜaの後ろに「,」が入っていたのか不思議だったが下記のコードで納得
> a, b = (1..5).partition(&:odd?) => [[1, 3, 5], [2, 4]] > b => [2, 4]
a, = (1..5).partition { |num| num.odd? }
SQLについて
SQLとは?
データベース言語の一つ データベースの定義や操作を行うことができる ISO(国際標準化機構)で規格が標準化されている。 一度学習すればほかのデータベースでもほぼ同じように操作可能 「シークェル」または「シーケル」と呼ばれている SQLという名称は公式には何の略でもないとされる IBMの操作言語「Structured Query Language」の略だと言われる事もあるようだがなんの略でもないらしい。 公式には、「Structured Query Language」という略称はIBM社の言語についてのもの。 標準規格のSQLの方は公式には何の略でもないということになっている
参考URL
vagrantからDockerの構築まで(備忘録)190610 21:28:44
vagrantからDockerの構築までの流れをまとめておくための記事
//フォルダまで移動してから $ vagrant up
しかしエラー発生
There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below. Command: ["startvm", "0", "--type", "headless"] Stderr: VBoxManage: error: Could not open the medium '/Users/〜/VirtualBox VMs/〜_default_〜〜/box-disk1.vmdk'. VBoxManage: error: VD: error VERR_FILE_NOT_FOUND opening image file '/Users/〜/VirtualBox VMs/〜/box-disk1.vmdk' (VERR_FILE_NOT_FOUND) VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MediumWrap, interface IMedium
190610 21:57:30
調べてみた。
どうやらエラーの原因はversionにあるようだ。
一度virtualBoxのアプリをアンインストールし入れ直した
↓ソフトウェアの読み込みが弾かれた場合に対処法
rails cがエラーになった時の対処方法
【mysqlで文字コードをutf8にする設定】
【mysqlで文字コードをutf8にする設定】 mysql -u root -p mysql> show variables like "chara%"; $ sudo vi /etc/my.cnf [mysqld] ... character-set-server=utf8 #mysqldセクションの末尾に追加 [client] default-character-set=utf8 #clientセクションを追加 :wq $ sudo service mysqld status mysqld (pid 8535) is running... $ sudo service mysqld stop Stopping mysqld: [ OK ] $ sudo service mysqld startStarting mysqld: [ OK ] $ sudo service mysqld status mysqld (pid 12850) is running... $ sudo service mysqld stop