001 例項變數做查詢快取

2021-08-29 13:06:35 字數 713 閱讀 4847

看了kevin yang對初學者的建議,終於決定開始學習railscasts了,目前一共有99個例子,暫且希望能每天堅持學習至少乙個,並以文字的形式表述出來。

user.find(session[:user_id])

以上**每次都會向資料庫發起一條查詢請求,為了提高效能,只需要多加乙個或標記,就可以在已賦值的情況下不再發起查詢請求。

@current_user ||= user.find(session[:user_id])

不過,論壇中的某位高人說了:

[quote="hideto"]看起來不錯,但是實際上有問題:

例項變數的作用域是一次請求,即一次請求結束後@current_user這個例項變數就沒了,下次請求時會照樣呼叫user.find(session[:user_id])

即每次請求都會查詢資料庫。

而最重要的是,rails目前已經內建支援查詢快取,見activerecord原始碼包裡的query_cache.rb。

這樣,即使一次請求裡呼叫current_user方法多次,查詢快取仍然會讓你只接觸資料庫一次。

另外,我推薦這種@current_user獲取方式:

其中logged_in?、require_login、editable?等輔助方法也很有用[/quote]

所以,其實該例是沒有意義的..囧

001 變數概述

1 變數已字母或者下劃線開頭,變數的構成為變數,字母,下劃線 2 變數在有效的範圍內必須是唯一的 3 在bash中,變數的的預設型別都是字串 4 變數的長度不可超過255個字元 自定義變數 使用者自己定義的變數 環境變數 主要儲存的是和系統操作環境相關的資料。變數可以自己定義,但是對系統生效的變數名...

C 語言例項001

我是新手 碼農一童,目的是為了與大家分享,討論c語言 並督促自己學習,話不多說,見乾貨。1 輸出helloword includevoid main 主函式 2 執行多個原始檔 hello.h檔案 includevoid helloworld 函式宣告print.cpp 檔案 include hel...

例項001 數字組合

題目 有四個數字 1 2 3 4,能組成多少個互不相同且無重複數字的三位數?各是多少?不想用三個迴圈,用了2個迴圈 去除某個元素的形式,感覺好像更複雜了 li 1 2,3 4 li2 1 2,3 4 避免迴圈1中刪改li中元素的影響 nums 迴圈1 for i in range 4 li3 li....