新聞中心
Cookies是由一位名叫Lou Montulli的計(jì)算機(jī)程序員于1994年首次發(fā)明的。沒(méi)有它們,網(wǎng)絡(luò)將是一個(gè)完全不同的地方。無(wú)論您是登錄wordpress網(wǎng)站的后端還是關(guān)閉煩人的彈出窗口,您每天都會(huì)使用cookie并與之交互(即使您沒(méi)有意識(shí)到)。

創(chuàng)新互聯(lián)建站是一家專(zhuān)業(yè)提供南縣企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、html5、小程序制作等業(yè)務(wù)。10年已為南縣眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)的建站公司優(yōu)惠進(jìn)行中。
到目前為止,您可能已經(jīng)猜到,當(dāng)我們提到cookie時(shí),我們指的是用于在網(wǎng)站上存儲(chǔ)重要訪問(wèn)者信息的cookie ,而不是美味的巧克力片。
今天我們將深入探討cookie和php會(huì)話(huà)這個(gè)有時(shí)令人困惑的話(huà)題。具體來(lái)說(shuō),您需要了解有關(guān)WordPress如何使用它們的所有信息,以及在托管您的網(wǎng)站、自定義代碼或使用第三方插件時(shí)應(yīng)該注意的一些常見(jiàn)問(wèn)題(尤其是作為開(kāi)發(fā)人員)。在我們看來(lái),這個(gè)話(huà)題討論得還不夠。
什么是Cookie?
cookie(也稱(chēng)為網(wǎng)絡(luò)cookie、跟蹤cookie、HTTP cookie、瀏覽器cookie)是用戶(hù)瀏覽器(Chrome、Firefox 等)在訪問(wèn)網(wǎng)站時(shí)存儲(chǔ)的一小段數(shù)據(jù)。它包含有關(guān)瀏覽活動(dòng)的信息,通常用于個(gè)性化用戶(hù)體驗(yàn)或用于身份驗(yàn)證和驗(yàn)證目的。會(huì)話(huà)cookie和持久性cookie是常見(jiàn)的cookie類(lèi)型。
- Cookie的類(lèi)型
- WordPress核心如何使用Cookie
- 第三方WordPress插件和主題如何使用Cookie
- Cookie和WordPress緩存
- 如何查看和清除Cookie
- GDPR和Cookie
- PHP會(huì)話(huà)
Cookie的類(lèi)型
通常設(shè)置兩種不同類(lèi)型的cookie:會(huì)話(huà)cookie和持久性cookie。
會(huì)話(huà)Cookie
會(huì)話(huà)cookie,也稱(chēng)為臨時(shí)cookie,是臨時(shí)的。它們沒(méi)有附加到期日期,僅存儲(chǔ)有關(guān)用戶(hù)在單個(gè)會(huì)話(huà)期間所做操作的信息。會(huì)話(huà)只是當(dāng)有人訪問(wèn)網(wǎng)站時(shí)分配的隨機(jī)生成/唯一值。會(huì)話(huà)cookie臨時(shí)存儲(chǔ)在內(nèi)存中,并在瀏覽器關(guān)閉或會(huì)話(huà)結(jié)束時(shí)自動(dòng)刪除。
持久性Cookie
正如您可能已經(jīng)猜到的那樣,持久性cookie是那些包含過(guò)期日期的cookie。這些持續(xù)時(shí)間更長(zhǎng),并存儲(chǔ)在磁盤(pán)上,直到它們過(guò)期或由用戶(hù)手動(dòng)清除 。這些有時(shí)也稱(chēng)為“跟蹤cookie”,因?yàn)檫@些是Google Analytics、AdRoll、Stripe等都使用的cookie類(lèi)型。
我們的返利聯(lián)盟計(jì)劃是另一個(gè)例子。當(dāng)用戶(hù)點(diǎn)擊附屬鏈接時(shí),會(huì)在用戶(hù)的瀏覽器中放置一個(gè)60天的cookie。這可以確保推薦人獲得適當(dāng)?shù)男庞茫词勾巳艘讯啻侮P(guān)閉并重新打開(kāi)其瀏覽器。
WordPress核心如何使用Cookie
當(dāng)我們提到WordPress核心時(shí),我們只是指在安裝任何第三方插件或主題之前構(gòu)成開(kāi)源項(xiàng)目的文件。它是我們喜歡稱(chēng)之為自然狀態(tài)的WordPress。
現(xiàn)在您已經(jīng)了解了cookie是什么以及不同類(lèi)型的基礎(chǔ)知識(shí),讓我們來(lái)看看WordPress核心為什么以及如何使用它們來(lái)使所有這些魔術(shù)在幕后發(fā)生。有趣的事實(shí)Cookie最初源自“magic cookie”一詞。
WordPress核心將cookie用于兩個(gè)不同的目的:
1. 登錄Cookie
登錄cookie包含身份驗(yàn)證詳細(xì)信息,并在用戶(hù)登錄WordPress管理儀表盤(pán)時(shí)使用。根據(jù)WordPress Codex,設(shè)置了幾個(gè)不同的會(huì)話(huà)cookie:
- 登錄時(shí),WordPress使用
wordpress_[hash]cookie存儲(chǔ)身份驗(yàn)證詳細(xì)信息(僅限該/wp-admin/區(qū)域)。 - 登錄后,WordPress設(shè)置
wordpress_logged_in_[hash]cookie。這表明您何時(shí)登錄以及您是誰(shuí)。
當(dāng)您嘗試訪問(wèn)WordPress網(wǎng)站的后端時(shí),會(huì)檢查上述兩個(gè)cookie是否存在并且尚未過(guò)期。這就是讓您神奇地繞過(guò) wp-login.php頁(yè)面的原因。
WordPress還設(shè)置wp-settings-{time}-[UID]cookie。ID是WordPress用戶(hù)數(shù)據(jù)庫(kù)表中的用戶(hù)ID。這存儲(chǔ)個(gè)人儀表板和管理界面設(shè)置。
2.評(píng)論Cookie
默認(rèn)情況下,當(dāng)有人對(duì)博客文章發(fā)表評(píng)論時(shí)會(huì)設(shè)置cookie(有效期為347天)。因此,如果他們稍后回來(lái),他們不必重新填寫(xiě)所有信息。存儲(chǔ)了以下三個(gè)cookie:
comment_author_[hash]comment_author_email_[hash]comment_author_url_[hash]
但是,由于GDPR最近對(duì)隱私政策進(jìn)行了更改,WordPress核心引入了新工具,以確保您讓用戶(hù)選擇加入這些正在設(shè)置的cookie。此設(shè)置(如果尚未設(shè)置)可以在WordPress管理儀表盤(pán)的“設(shè)置 → 討論”下啟用。選擇“顯示評(píng)論cookies復(fù)選框,允許設(shè)置評(píng)論者cookies?!边x項(xiàng)。流行的Akismet插件還允許您顯示隱私聲明。
評(píng)論cookie如何選擇加入
第三方WordPress插件和主題如何使用Cookie
就像WordPress將cookie用于某些功能一樣,您安裝的第三方插件和主題也會(huì)設(shè)置cookie。他們中的大多數(shù)使用存儲(chǔ)在wp_options表或他們自己的自定義表中的瀏覽器cookie和數(shù)據(jù)庫(kù)行的組合。這是因?yàn)閃ordPress是無(wú)狀態(tài)的。
無(wú)狀態(tài)應(yīng)用程序是一種應(yīng)用程序,它不會(huì)保存在一個(gè)會(huì)話(huà)中生成的客戶(hù)端數(shù)據(jù),以便在與該客戶(hù)端的下一個(gè)會(huì)話(huà)中使用。每個(gè)會(huì)話(huà)都像第一次一樣進(jìn)行,響應(yīng)不依賴(lài)于前一個(gè)會(huì)話(huà)的數(shù)據(jù)。–TechTarget
有了新的隱私法,真正了解設(shè)置了哪些cookie以及它們是否為訪問(wèn)者提供了選擇加入的方式比以往任何時(shí)候都更加重要。提示:并非所有cookie都需要選擇加入。
以下只是cookie用途的眾多示例中的幾個(gè):
- 如果您的WordPress網(wǎng)站上有一個(gè)彈出框并且訪問(wèn)者將其關(guān)閉,這通常會(huì)設(shè)置一個(gè)cookie,以便它不會(huì)再次出現(xiàn)。
- 在您的電子商務(wù)網(wǎng)站上添加到購(gòu)物車(chē)的商品。存儲(chǔ)cookie以便購(gòu)物車(chē)在您繼續(xù)瀏覽網(wǎng)站時(shí)保留您的產(chǎn)品。
- IP地理位置功能可能會(huì)存儲(chǔ)瀏覽該站點(diǎn)的訪問(wèn)者的IP地址和緯度/經(jīng)度坐標(biāo)。這通常用于向特定區(qū)域顯示特定內(nèi)容,甚至可能將用戶(hù)重定向到不同的子站點(diǎn)。
- 使用PrettyLinks插件等鏈接縮短器跟蹤點(diǎn)擊活動(dòng)。
- 如果用戶(hù)已經(jīng)訂閱,通訊插件可能會(huì)為他們?cè)O(shè)置一個(gè)cookie,這可以完全隱藏通訊框。
基本上,在WordPress網(wǎng)站上的任何操作或選擇加入,通常都會(huì)涉及在幕后在瀏覽器中設(shè)置cookie。當(dāng)然,這樣做的目的是嘗試幫助改善瀏覽器體驗(yàn)或通過(guò)驗(yàn)證提供額外的功能。
WooCommerce Cookie
諸如WooCommerce之類(lèi)的電子商務(wù)插件通常會(huì)設(shè)置自己的附加cookie,以便買(mǎi)家可以輕松地將商品添加到購(gòu)物車(chē)、存儲(chǔ)以供以后結(jié)帳以及登錄和退出帳戶(hù)。
為了跟蹤購(gòu)物車(chē)數(shù)據(jù),WooCommerce設(shè)置了以下三個(gè)cookie (cookie中不存儲(chǔ)個(gè)人信息):
woocommerce_cart_hashwoocommerce_items_in_cartwp_woocommerce_session_
前兩個(gè)cookie包含有關(guān)購(gòu)物車(chē)的信息,只是幫助WooCommerce知道購(gòu)物車(chē)數(shù)據(jù)何時(shí)更改。第三個(gè)cookiewp_woocommerce_session_包含每個(gè)客戶(hù)的唯一代碼,該代碼對(duì)應(yīng)于數(shù)據(jù)庫(kù)中自定義wp_woocommerce_sessions表中的條目。
wp_woocommerce_sessions表
wp_commerce_session_數(shù)據(jù)之前存儲(chǔ)在wp_options表中,但在WooCommerce 2.5中引入了新的會(huì)話(huà)處理程序時(shí),它們被移動(dòng)到了自己的自定義表中。這是為了提高性能、可伸縮性和會(huì)話(huà)管理。否則,您很快就會(huì)得到一個(gè)必須清理的臃腫的wp_options表。
Easy Digitial Downloads Cookie
Easy Digital Downloads默認(rèn)使用WP_Session,它是瀏覽器cookie和存儲(chǔ)在wp_options表中的數(shù)據(jù)庫(kù)行的組合。下面是它設(shè)置的cookie:
edd_items_in_cart
Cookie和WordPress緩存
說(shuō)到WordPress緩存,這就是事情變得棘手的地方。緩存本質(zhì)上是存儲(chǔ)來(lái)自一個(gè)請(qǐng)求的資源并將這些資源重用于后續(xù)請(qǐng)求的過(guò)程?;旧希?strong>減少了生成頁(yè)面視圖所需的工作量。雖然這對(duì)性能很有好處,但在涉及cookie時(shí)會(huì)引起問(wèn)題。
為什么?因?yàn)閏ookie用于執(zhí)行特定操作,例如在您瀏覽WooCommerce網(wǎng)站時(shí)保持購(gòu)物車(chē)的填充。但是,如果頁(yè)面是從緩存中提供的,那么PHP和數(shù)據(jù)庫(kù)都不會(huì)做任何事情,服務(wù)器只會(huì)提供頁(yè)面的靜態(tài)副本。
所以,你可以做什么?
1. 使用JavaScript
第一個(gè)選項(xiàng)是使用JavaScript并動(dòng)態(tài)更新頁(yè)面上的內(nèi)容?;旧?,您有HTML占位符并使用JavaScript通過(guò)API或ajax調(diào)用獲取信息。
一個(gè)示例是通過(guò)使用JavaScript在wp-api上獲取文章列表,然后在側(cè)邊欄中呈現(xiàn)它們,從而在WordPress側(cè)邊欄中加載文章列表。在這種情況下,您可以在不從緩存中清除頁(yè)面的情況下更新文章列表,因?yàn)閿?shù)據(jù)是動(dòng)態(tài)生成的。
雖然這并不理想,但在性能方面,如果可能的話(huà),緩存總是更好。但是,如果您必須讓一些內(nèi)容保持動(dòng)態(tài),而頁(yè)面本身可以保持靜態(tài)(從緩存中提供),這是一種方法 – 使用JavaScript通過(guò)API/ajax動(dòng)態(tài)下拉頁(yè)面該部分的內(nèi)容稱(chēng)呼。但是,除非您可以聘請(qǐng)WordPress開(kāi)發(fā)人員來(lái)構(gòu)建自定義JavaScript解決方案或插件擴(kuò)展,否則此選項(xiàng)通常不實(shí)用。
2. 使用Admin-Ajax調(diào)用
Admin-ajax.php無(wú)法緩存,因此您可以使用admin-ajax調(diào)用。No Cache AJAX Widgets插件就是一個(gè)很好的例子。它進(jìn)行admin-ajax調(diào)用,因此不必?fù)?dān)心與服務(wù)器級(jí)或第三方緩存解決方案發(fā)生沖突。
然而,就像使用JavaScript一樣,沿著這條路線走對(duì)于普通用戶(hù)來(lái)說(shuō)通常是不可行的。它還可能導(dǎo)致其他性能問(wèn)題,例如高admin-ajax使用率 和大量未緩存請(qǐng)求。
3. 從緩存中排除頁(yè)面(當(dāng)Cookie存在時(shí))
除非您可以使用JavaScript或admin-ajax路由,否則當(dāng)存在特定cookie時(shí)將頁(yè)面從緩存中排除是最好的方法。這通常是我們推薦的,尤其是那些運(yùn)行高度動(dòng)態(tài)網(wǎng)站的網(wǎng)站,例如WooCommerce和Easy Digital Downloads。
在設(shè)置緩存的時(shí)候,我們應(yīng)該將某些WooCommerce和Easy Digital Downloads頁(yè)面(例如購(gòu)物車(chē)、我的帳戶(hù)和結(jié)帳)設(shè)置自動(dòng)從緩存中排除。比如設(shè)置服務(wù)器級(jí)別的規(guī)則,以便用戶(hù)在檢測(cè)到woocommerce_items_in_cartcookie 或 edd_items_in_cartcookie時(shí)自動(dòng)繞過(guò)緩存,以確保順利和同步的結(jié)帳過(guò)程。
當(dāng)我們檢測(cè)到有人登錄WordPress時(shí),我們還會(huì)偵聽(tīng)相關(guān)的登錄cookie并將緩存設(shè)置為繞過(guò)。這可以防止后端儀表板意外被緩存。
默認(rèn)情況下,我們不會(huì)wp_woocommerce_session_從緩存中排除cookie。根據(jù)我們的經(jīng)驗(yàn),大多數(shù)WooCommerce網(wǎng)站都沒(méi)有任何問(wèn)題。這還通過(guò)增加緩存HIT比率來(lái)提高性能,同時(shí)使用更少的PHP workers。
但是,由于有許多不同的WordPress主題和插件配置,wp_woocommerce_session_如果需要,我們可以從緩存中排除cookie。只需聯(lián)系我們的支持團(tuán)隊(duì)。結(jié)果是,一旦用戶(hù)將產(chǎn)品添加到他們的購(gòu)物車(chē)中,所有后續(xù)請(qǐng)求都不會(huì)從緩存中得到處理,從而增加了PHP worker的使用率。
如果您需要從緩存中排除的自定義頁(yè)面,請(qǐng)隨時(shí)與我們的支持團(tuán)隊(duì)開(kāi)票。同樣,您必須小心excludes。太多未緩存的頁(yè)面確實(shí)會(huì)降低性能。
如何查看和清除Cookie
在網(wǎng)站上查看和清除cookie很容易。要查看在特定站點(diǎn)上設(shè)置了哪些cookie,請(qǐng)瀏覽到該站點(diǎn)并單擊頂部的小掛鎖圖標(biāo)。然后點(diǎn)擊“Cookie”。
正在使用的Cookie
然后深入到該網(wǎng)站的文件夾。在下面的示例中,您可以看到我們?cè)O(shè)置了一些WooCommerce cookie以及 wordpress_logged_in_[hash]cookie。您還可以查看過(guò)期時(shí)間以及它是持久cookie還是會(huì)話(huà)cookie(瀏覽會(huì)話(huà)結(jié)束時(shí))。
WordPress cookie
要?jiǎng)h除cookie,只需單擊單個(gè)cookie并單擊“刪除”按鈕。您也可以在文件夾級(jí)別或Chrome DevTools中執(zhí)行此操作。
清除cookie還可以幫助您修復(fù)304錯(cuò)誤。
或者,您可以在瀏覽器中搜索或清除所有cookie。
GDPR和Cookie
GDPR是一項(xiàng)新的隱私法,于2018年5月25日生效。它旨在讓公民重新控制他們的個(gè)人數(shù)據(jù)。
下面是一個(gè)為幫助遵守新法律所做的一項(xiàng)更改的示例。當(dāng)您第一次訪問(wèn)我們的網(wǎng)站時(shí),您可能已經(jīng)看過(guò)它,您會(huì)在屏幕底部看到“ACCEPT Cookies”提示。這是因?yàn)槲覀儸F(xiàn)在被法律要求為用戶(hù)提供一種選擇加入和選擇退出設(shè)置的cookie的方式。在不通知用戶(hù)數(shù)據(jù)收集的情況下只運(yùn)行您想要的任何東西的日子已經(jīng)一去不復(fù)返了。
如果您單擊“ACCEPT Cookie”,則會(huì)為用戶(hù)設(shè)置所有Cookie。如果您單擊“Cookie Setting”,我們現(xiàn)在會(huì)提供一種方式來(lái)選擇加入和退出您想要的任何Cookie。
Cookie設(shè)置
很漂亮吧?我們的cookie解決方案是由我們的開(kāi)發(fā)人員內(nèi)部構(gòu)建的,但這里有一些有用的GDPR WordPress插件,可以幫助您完成類(lèi)似的事情。同樣,Cookie只是完全符合 GDPR 的一小部分。
PHP會(huì)話(huà)
PHP會(huì)話(huà)是標(biāo)準(zhǔn)cookie方法的替代方案。它仍然是一個(gè)cookie,但它被稱(chēng)為PHPSESSID,通常存儲(chǔ)在Web服務(wù)器本身的/tmp/目錄中。服務(wù)器知道將給定會(huì)話(huà)與給定請(qǐng)求相關(guān)聯(lián)的方式是它也存儲(chǔ)在HTTP cookie中。
PHPSESSID HTTP cookie
這也可以在站點(diǎn)的HTTP標(biāo)頭下看到。
HTTP標(biāo)頭設(shè)置cookie PHPSESSID
PHP session很像一個(gè)普通的session,它在用戶(hù)關(guān)閉瀏覽器時(shí)結(jié)束。
PHP會(huì)話(huà)的問(wèn)題都?xì)w結(jié)為性能和緩存問(wèn)題。存儲(chǔ)在瀏覽器cookie中的信息必須隨著每個(gè)請(qǐng)求來(lái)回反彈,以便服務(wù)器知道用戶(hù)是誰(shuí)。這意味著對(duì)于使用PHPSESSID的站點(diǎn),主機(jī)必須設(shè)置PHPSESSID以繞過(guò)緩存。然而,結(jié)果是PHPSESSID必須設(shè)置為100%的時(shí)間繞過(guò),因?yàn)榕c wordpress_logged_in不同的是,PHPSESSID是在每個(gè)PHP請(qǐng)求上設(shè)置的。
所以想象一下,wordpress_logged_in必須設(shè)置100%的時(shí)間才能允許登錄功能正常工作。這意味著即使是注銷(xiāo)的用戶(hù)也必須擁有cookie,并且它必須對(duì)他們來(lái)說(shuō)是唯一的。想象一下,為了使WordPress登錄系統(tǒng)正常工作,這是必需的。在這種情況下,每個(gè)頁(yè)面視圖都必須繞過(guò)緩存,以便wordpress_logged_in為登錄和注銷(xiāo)的用戶(hù)正確設(shè)置cookie。
這就是使用PHPSESSID的問(wèn)題。因?yàn)樗窃诿恳粋€(gè)PHP請(qǐng)求上生成的,所以如果一個(gè)站點(diǎn)依賴(lài)于PHPSESSID cookie,主機(jī)將不得不設(shè)置PHPSESSID以100%的時(shí)間繞過(guò)緩存。否則,PHPSESSID最終會(huì)被緩存,并且會(huì)破壞依賴(lài)它的任何功能。
我們不建議使用PHP會(huì)話(huà),PHP會(huì)話(huà)還具有其他應(yīng)考慮的安全隱患。
如果您在您的網(wǎng)站上看到代碼使用session_start,這意味著它使用PHP會(huì)話(huà)。
許多插件和主題開(kāi)發(fā)人員已經(jīng)開(kāi)始使用瀏覽器cookie和數(shù)據(jù)庫(kù)行的組合(在wp_options表中或他們自己的自定義表中)。如果您需要會(huì)話(huà)數(shù)據(jù),這是更好的方法。
小結(jié)
希望現(xiàn)在您比以前更了解WordPress cookie和PHP會(huì)話(huà)的工作原理。Cookies目前是讓世界運(yùn)轉(zhuǎn)的東西,對(duì)于WordPress網(wǎng)站上發(fā)生的幾乎所有事情都很重要。從讓我們保持登錄狀態(tài),到確保順暢的購(gòu)物車(chē)體驗(yàn),甚至確保彈出窗口保持關(guān)閉狀態(tài)。
當(dāng)前題目:WordPressCookies和PHP會(huì)話(huà)——你需要知道的一切
URL標(biāo)題:http://fisionsoft.com.cn/article/djoipjo.html


咨詢(xún)
建站咨詢(xún)
