2010-03-24 53 views
2

好吧,首先這不是關於表單這是關於一致的佈局作爲用戶探索一個網站。

讓我解釋一下:

如果我們想象一個(非Ajax)數碼相機的網上商店,說是有人在DSLR部分,指定由價格來查看畫廊模式和秩序的攝像機。然後他們點擊緊湊型相機的頁面。如果他們選擇的「視圖」被轉移到這個新頁面,這對用戶來說是有利的。

現在,我會說使用會話 - 我錯了嗎?

是否存在性能問題,我應該知道幾個小會話變量(即視圖= 1,orderby =價格)?

+0

沒有。別擔心。 – SilentGhost 2010-03-24 18:41:36

回答

8

說到性能,兩種解決方案都不應該有太多問題。

有些事情必須要考慮的是:

  • 用GET,如果URL中獲取複製粘貼(以電子郵件或MSN),誰將會收到URL中的其他具有相同的GET參數
    • 這是一件好事,還是不是?
  • 在另一方面,會議將不被共享,如果URL是複製粘貼
    • 這意味着第一個男人會說其他「鍵,看看這個」,並第二個人不會看到相同的頁面;;同樣的事情與書籤,我應該補充。
  • GET是具體到每一個URL
    • 雖然會話翻過用戶
    • 的所有標籤其中使用會話時,如果你同時會引起麻煩,意味着有幾個選項卡瀏覽共享不要拿那
2

我會說使用兩個。將它存儲在會話中,但也將其放在頁面的get參數中。

爲什麼?通過這種方式,用戶可以在頁面之間進行選擇,但他們也在URL中,所以如果他將搜索結果發送給他的朋友,他的朋友就會像他一樣查看他們。

不,會話的性能不會因將這些小變量放在那裏而降低。除非您在會話中存儲單片陣列,否則加載會話的大多數時間都會從其存儲介質(文件,數據庫,memcache等)讀取它。

+0

$ _GET唯一的負面是有趣的網址 – dnagirl 2010-03-24 18:42:58

+0

,這會不會導致會話冗餘? – Haroldo 2010-03-24 18:43:22

+0

@Haroldo這取決於你想要什麼。當您呈現鏈接時(對於「下一頁」按鈕等),您可以選擇將其從$ _GET或會話中拉出。如果你將它存儲在會話中,你可以在訪問之間保存它們的設置(儘管你可以使用一個數據庫)。 – ryeguy 2010-03-24 18:46:52

0

這是一個主觀的問題護理,它的工作無論哪種方式。

就我個人而言,我會與會話去,因爲它不會干擾網址,所以人們可以如果他們想要的書籤網址。

但是,如果他們爲它添加書籤,他們可能會看到不同的東西,如果它使用$ _SESSION完成的話。

2

你應該在你的情況下使用GET。

Web開發中有一條簡單的規則:每個包含不同內容的頁面都必須有自己的地址。因此,客戶可以將任何頁面保存到收藏夾中,然後將其發送到頻道。這是在底部的痛苦,然後有人給你發送一個鏈接到一個特定的頁面,說「看!」但網站使用框架,你在首頁登陸,不知道在哪裏看。

您可以將用戶的偏好保存到他的個人資料/ cookie(不是會話)中,但它也應該反映在地址欄中。

會議被用於完全不同的目的,購物車就是一個例子。