国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

舉例理解Ruby on Rails的頁面緩存機制

2019-10-26 19:26:12
字體:
來源:轉載
供稿:網友

有了頁面緩存,Rails 就可以不再介入。在某種程度上,這是件好事,因為您的確可以獲得優秀的性能。Rails 只需創建 HTML 頁面,將其放入目錄,之后,就可以置之于腦后。從那時起,就由應用服務器管理這些頁面,且頁面進入應用服務器無需任何循環。從性能的角度而言,頁面緩存真是天賜之福。

我也鐘愛頁面緩存,Rails 使之簡單利落。只需使用一行代碼就可以啟用緩存。如果再加入一些代碼,就能通過簡單地刪除文件操作或使用 Rails 較高層的 API 終止緩存。這里存在一個問題。并不是每個網站都能使用頁面緩存。如果頁面上的數據會根據訪問它的用戶而改變,那么就不能進行頁面緩存。而且,如果很難判斷頁面何時到期終止,就會發現頁面緩存的要求太過苛刻。

比如,幾乎在每個頁面上,ChangingThePresent.org(參閱 側欄)都有某些用戶數據是根據當前登錄的用戶而變化的。圖 1 顯示了我們最新主頁的一部分。(我們一直在努力完善它,所以它有可能會改變。)這個頁面呈現出的問題相對簡單。如果能判斷用戶是否已經登錄,就可以用 Flash、JavaScript、DHTML 或任何其他基于瀏覽器的代碼動態定制視圖。您會發現已登錄的用戶可以登出系統或查看其配置文件,而已登出的用戶則可以注冊或再次登錄。
圖 1. ChangingThePresent.org 上的登錄和登出視圖

201542391709466.jpg (475×170)

圖 2 顯示了稍微有些高級的用戶數據視圖,我們的站點就使用了這個視圖。圖 2 中的兩個視圖有極大的不同。為了處理頁面緩存,我必須先解決所有的差異。對于每個已登錄的用戶,我都必須替換掉頁面的登出內容,使之顯示登錄用戶的登錄 ID 和用戶圖片。緩存這些內容會帶來另一層面的挑戰,因為每個用戶的數據都不盡相同。
圖 2. 兩個截然不同的視圖

201542391801777.jpg (359×253)

這種情況并非 ChangingThePresent.org 所獨有。如果需要個性化用戶體驗,那么不可修改的 Rails 頁面緩存的使用就會受到限制。但如果定制不多,那么實際上還是能很容易地緩存這些頁面的。

解決這些問題的方法很多。我更傾向于使用如下這些技巧:

    在 Rails 框架的約束之內,取消頁面緩存并使用段緩存替代它。     先加載頁面的大部分,然后使用 JavaScript 和 Ajax 加載該頁面較小的動態部分。服務器端代碼可以檢測用戶是否登錄,然后用 Ajax 呈現合適的部分。     將某些用戶狀態(比如用戶是否已登錄)存儲在客戶端的 cookie 中。然后,根據 cookie 的內容,使用 JavaScript 動態更改頁面的外觀。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玛纳斯县| 濉溪县| 科技| 商丘市| 浮山县| 育儿| 陆川县| 商水县| 苍山县| 门头沟区| 邮箱| 神池县| 岳普湖县| 黔南| 灵宝市| 河东区| 平南县| 铁力市| 吉木乃县| 东宁县| 齐河县| 芦山县| 霍城县| 宁安市| 勃利县| 阿城市| 怀宁县| 阜平县| 苏尼特右旗| 清苑县| 文水县| 时尚| 太保市| 崇文区| 得荣县| 浦东新区| 澄城县| 清水河县| 宜宾县| 右玉县| 梅河口市|