WordPress 的 Transients API 自 2.8 版本起就已支持,但許多 WordPress 開(kāi)發(fā)者仍未意識(shí)到它的存在及其用途。簡(jiǎn)而言之,WordPress Transients API 允許我們存儲(chǔ)具有過(guò)期時(shí)間的鍵值對(duì)數(shù)據(jù)。
本教程將深入講解如何使用此 API。我們還將了解它與 Options API 的區(qū)別,它如何與 WordPress 緩存系統(tǒng)交互以及一些用例。
### Options API 與 Transients API 的比較
大多數(shù) WordPress 開(kāi)發(fā)者都了解 WordPress Options API。Options API 允許我們將鍵值對(duì)數(shù)據(jù)永久存儲(chǔ)在數(shù)據(jù)庫(kù)中。許多 WordPress 開(kāi)發(fā)者沒(méi)有意識(shí)到的是,Options API 實(shí)現(xiàn)了一個(gè)緩存層(即 WordPress 對(duì)象緩存)來(lái)緩存選項(xiàng)。如果未啟用持久緩存,則每次 HTTP 請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的緩存會(huì)話,否則 Options API 將使用持久緩存。
幾乎每個(gè) WordPress API 都使用 WordPress 對(duì)象緩存與 MySQL 交互,以緩存數(shù)據(jù)以防止多次 MySQL 查詢。
Transients API 的工作方式與所有其他 API 略有不同。它僅當(dāng)未啟用持久緩存時(shí)才將鍵值對(duì)數(shù)據(jù)存儲(chǔ)在 MySQL 中,否則它僅使用對(duì)象緩存。而所有其他 API 都使用兩者來(lái)同步數(shù)據(jù),以確保數(shù)據(jù)的持久性。因此,Transients 不是持久的,即不應(yīng)將其用于存儲(chǔ)關(guān)鍵數(shù)據(jù)。因此,Transients API 非常適合緩存數(shù)據(jù)。
注意:如果未啟用持久緩存,則 Transients API 使用 Options API 來(lái)存儲(chǔ)鍵值對(duì)數(shù)據(jù),否則它直接使用對(duì)象緩存。Transients 存儲(chǔ)在 Options 表中。每個(gè) transient 由兩個(gè)選項(xiàng)組成,即鍵值對(duì)數(shù)據(jù)和鍵值對(duì)過(guò)期日期。
創(chuàng)建 Transient
要設(shè)置 transient,我們需要使用 set_transient()
函數(shù)。此函數(shù)采用三個(gè)參數(shù):
- Transient 名稱(必需):必須是字符串。字符串長(zhǎng)度不能超過(guò) 40 個(gè)字符,否則將無(wú)法創(chuàng)建 transient。
- Transient 值(必需):必須是字符串。如果您傳遞對(duì)象或數(shù)組,則會(huì)將其序列化,即轉(zhuǎn)換為字符串。
- 過(guò)期秒數(shù)(可選):transient 將在其中過(guò)期的秒數(shù)。transient 也可能在過(guò)期時(shí)間之前過(guò)期,因?yàn)榫彺娴臄?shù)據(jù)(即存儲(chǔ)在對(duì)象緩存中的數(shù)據(jù))是易失的。
以下是使用 set_transient()
函數(shù)的代碼示例:
set_transient("Website", "SitePoint", 3600);
在這里,我們將名為“Website”的鍵與值為“SitePoint”的值存儲(chǔ) 1 小時(shí)。1 小時(shí)后,該鍵將不再可訪問(wèn)。
set_transient
如果 transient 成功創(chuàng)建則返回 true,否則返回 false。
如果您沒(méi)有提供過(guò)期時(shí)間或提供“0”作為過(guò)期時(shí)間,則它永遠(yuǎn)不會(huì)使 transient 過(guò)期。
注意:如果未提供過(guò)期時(shí)間或過(guò)期時(shí)間為“0”,則 transients 會(huì)自動(dòng)加載(即在請(qǐng)求頁(yè)面時(shí)加載到內(nèi)存中)。
Transients API 還提供另一個(gè)函數(shù)來(lái)創(chuàng)建 transient,即 set_site_transient
。它也采用與 set_transient
相同的三個(gè)參數(shù)。它們之間的大部分功能都是相同的。set_transient
和 set_site_transient
之間的區(qū)別在于:
- 當(dāng)
set_site_transient
用于多站點(diǎn)網(wǎng)絡(luò)時(shí),transient 可用于網(wǎng)絡(luò)中的所有站點(diǎn)。 - 無(wú)論是否有過(guò)期時(shí)間,使用
set_site_transient
創(chuàng)建的 transients 始終自動(dòng)加載。
最后,如果您運(yùn)行現(xiàn)有 transient 鍵的 set_transient
,則值和過(guò)期時(shí)間將更新為新提供的值和過(guò)期時(shí)間。過(guò)期時(shí)間是從首次設(shè)置 transient 時(shí)計(jì)算的。
檢索 Transient
要檢索存儲(chǔ)的 transient,您需要使用 get_transient
函數(shù)。它只接受一個(gè)參數(shù),即 transient 的名稱。
set_transient("Website", "SitePoint", 3600);
如果 transient 已過(guò)期或不存在,則 get_transient
返回 false。否則,它返回 transient 的值。
如果 transient 已過(guò)期或未找到,則會(huì)返回 false,因此您永遠(yuǎn)不應(yīng)在 transient 中存儲(chǔ)布爾值。如果您想存儲(chǔ)布爾值,請(qǐng)使用整數(shù)形式,即 0 或 1。
如果您已使用 set_site_transient
設(shè)置了 transient,請(qǐng)使用 get_site_transient
來(lái)檢索它,而不是 get_transient
。
刪除 Transient
要?jiǎng)h除 transient,您需要使用 delete_transient
函數(shù)。它只接受一個(gè)參數(shù),即 transient 的名稱。
這是一個(gè)示例:
$value = get_transient("Website"); if($value === false) { echo "Expired or not found"; }
如果 transient 成功刪除,則返回 true。如果找不到 transient 或由于其他原因無(wú)法刪除 transient,則返回 false。
如果您已使用 set_site_transient
設(shè)置了 transient,請(qǐng)使用 delete_site_transient
來(lái)刪除它,而不是 delete_transient
。
檢索和緩存特定類別的帖子
Transients API 可用于緩存任何內(nèi)容。大多數(shù)插件都使用此 API 來(lái)緩存數(shù)據(jù)。為了舉例說(shuō)明,讓我們看看如何檢索和緩存類別的帖子。
delete_transient("Website");
在這里,我們緩存類別帖子 1 小時(shí)。我們使用 WP_Query
類檢索帖子。WP_Query
被序列化并存儲(chǔ)為 transient。檢索時(shí),它會(huì)被反序列化。
總結(jié)
本文演示了我們?nèi)绾屋p松地使用 Transients API 在 WordPress 中緩存數(shù)據(jù)。
您可以使用 Memcached 對(duì)象緩存或 WP Redis 插件在 WordPress 中啟用持久緩存。
請(qǐng)?jiān)谙旅娴脑u(píng)論中告訴我您使用此 API 的經(jīng)驗(yàn)。
關(guān)于 WordPress Transients API 的常見(jiàn)問(wèn)題解答 (FAQ)
使用 WordPress Transients API 的主要目的是什么?
使用 WordPress Transients API 的主要目的是存儲(chǔ)臨時(shí)數(shù)據(jù),這有助于加快 WordPress 網(wǎng)站的速度。它允許開(kāi)發(fā)人員存儲(chǔ)具有過(guò)期時(shí)間的 data。此數(shù)據(jù)可以是任何內(nèi)容,從復(fù)雜的數(shù)據(jù)庫(kù)查詢結(jié)果到簡(jiǎn)單的字符串值。通過(guò)存儲(chǔ)此數(shù)據(jù),您的 WordPress 網(wǎng)站可以快速檢索它,而無(wú)需每次都重新生成它,從而提高網(wǎng)站的性能。
WordPress Transients API 如何提高網(wǎng)站性能?
WordPress Transients API 通過(guò)減少數(shù)據(jù)庫(kù)查詢次數(shù)來(lái)提高網(wǎng)站性能。當(dāng)使用 Transients API 存儲(chǔ)數(shù)據(jù)時(shí),可以從緩存中快速檢索它,而無(wú)需執(zhí)行新的數(shù)據(jù)庫(kù)查詢。這大大減少了服務(wù)器的負(fù)載并加快了頁(yè)面加載時(shí)間,從而提供了更好的用戶體驗(yàn)。
我可以將 WordPress Transients API 用于永久數(shù)據(jù)存儲(chǔ)嗎?
不可以,WordPress Transients API 不是為永久數(shù)據(jù)存儲(chǔ)設(shè)計(jì)的。使用 Transients API 存儲(chǔ)的數(shù)據(jù)是臨時(shí)的,并且有過(guò)期時(shí)間。數(shù)據(jù)過(guò)期后,它會(huì)自動(dòng)從緩存中刪除。如果您需要永久存儲(chǔ)數(shù)據(jù),則應(yīng)使用其他 WordPress API,例如 Options API。
如何在 WordPress 中刪除 transient?
您可以使用 delete_transient
函數(shù)在 WordPress 中刪除 transient。此函數(shù)將 transient 的名稱作為其參數(shù)。這是一個(gè)例子:
delete_transient( 'my_transient' );
在此示例中,“my_transient”是要?jiǎng)h除的 transient 的名稱。
如果我嘗試檢索已過(guò)期的 transient 會(huì)發(fā)生什么?
如果您嘗試檢索已過(guò)期的 transient,WordPress Transients API 將返回 false。這是因?yàn)閿?shù)據(jù)一旦過(guò)期就會(huì)自動(dòng)從緩存中刪除。在嘗試使用數(shù)據(jù)之前,您應(yīng)該始終檢查 transient 是否仍然有效。
我可以將 transient 設(shè)置為永不過(guò)期嗎?
雖然您可以通過(guò)為其提供非常長(zhǎng)的過(guò)期時(shí)間來(lái)技術(shù)性地將 transient 設(shè)置為永不過(guò)期,但不建議這樣做。Transients 用于臨時(shí)數(shù)據(jù)存儲(chǔ),將其設(shè)置為永不過(guò)期可能會(huì)導(dǎo)致緩存中不必要的數(shù)據(jù)累積。
如何在 WordPress 中管理和刪除 transients?
您可以使用各種插件(如 Transient Manager、WP-Optimize 和 Transients Manager)在 WordPress 中管理和刪除 transients。這些插件提供了一個(gè)用戶友好的界面來(lái)查看、刪除和管理所有 transients。
我可以在多站點(diǎn)安裝中使用 WordPress Transients API 嗎?
是的,您可以在多站點(diǎn)安裝中使用 WordPress Transients API。但是,您應(yīng)該使用 set_site_transient
和 get_site_transient
函數(shù),而不是 set_transient
和 get_transient
。這些函數(shù)可在整個(gè)站點(diǎn)網(wǎng)絡(luò)中使用。
transient 和 cookie 之間有什么區(qū)別?
transient 和 cookie 的用途不同。transient 用于在服務(wù)器端存儲(chǔ)臨時(shí)數(shù)據(jù)以提高網(wǎng)站性能。另一方面,cookie 用于在客戶端存儲(chǔ)數(shù)據(jù),通常用于記住用戶偏好和會(huì)話。
本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

WordPress導(dǎo)致服務(wù)器CPU使用率飆升的主要原因包括插件問(wèn)題、數(shù)據(jù)庫(kù)查詢效率低、主題代碼質(zhì)量差或流量激增。1.首先通過(guò)top、htop或控制面板工具確認(rèn)是否為WordPress引起的高負(fù)載;2.進(jìn)入故障排查模式逐步啟用插件排查性能瓶頸,使用QueryMonitor分析插件執(zhí)行情況并刪除或替換低效插件;3.安裝緩存插件、清理冗余數(shù)據(jù)、分析慢查詢?nèi)罩疽詢?yōu)化數(shù)據(jù)庫(kù);4.檢查主題是否存在過(guò)度加載內(nèi)容、復(fù)雜查詢或缺乏緩存機(jī)制等問(wèn)題,建議用標(biāo)準(zhǔn)主題測(cè)試對(duì)比并優(yōu)化代碼邏輯。按照上述步驟逐一排查可定位并解

MinifyingJavaScript文件可通過(guò)刪除空白、注釋和無(wú)用代碼來(lái)提升WordPress網(wǎng)站加載速度。1.使用支持合并壓縮的緩存插件如W3TotalCache,在“Minify”選項(xiàng)中啟用并選擇壓縮模式;2.使用專用壓縮插件如FastVelocityMinify,提供更精細(xì)控制;3.手動(dòng)壓縮JS文件并通過(guò)FTP上傳,適用于熟悉開(kāi)發(fā)工具的用戶。注意部分主題或插件腳本可能與壓縮功能沖突,啟用后需徹底測(cè)試網(wǎng)站功能。

優(yōu)化WordPress站點(diǎn)不依賴插件的方法包括:1.使用輕量級(jí)主題,如Astra或GeneratePress,避免功能堆砌的主題;2.手動(dòng)壓縮和合并CSS、JS文件,減少HTTP請(qǐng)求;3.上傳前優(yōu)化圖片,使用WebP格式并控制文件大?。?.配置.htaccess啟用瀏覽器緩存,并接入CDN提升靜態(tài)資源加載速度;5.限制文章修訂版本并定期清理數(shù)據(jù)庫(kù)冗余數(shù)據(jù)。

TransientsAPI是WordPress中用于臨時(shí)存儲(chǔ)可自動(dòng)過(guò)期數(shù)據(jù)的內(nèi)置工具,其核心函數(shù)為set_transient、get_transient和delete_transient。相比OptionsAPI,transients支持設(shè)置生存時(shí)間(TTL),適合緩存API請(qǐng)求結(jié)果、復(fù)雜計(jì)算數(shù)據(jù)等場(chǎng)景。使用時(shí)需注意key命名唯一性與命名空間、緩存“懶刪除”機(jī)制及對(duì)象緩存環(huán)境下可能不持久的問(wèn)題。典型應(yīng)用場(chǎng)景包括減少外部請(qǐng)求頻率、控制代碼執(zhí)行節(jié)奏和提升頁(yè)面加載性能。

防止評(píng)論垃圾信息最有效的方式是通過(guò)程序化手段自動(dòng)識(shí)別并攔截。1.使用驗(yàn)證碼機(jī)制(如GooglereCAPTCHA或hCaptcha)可有效區(qū)分人類與機(jī)器人,尤其適合公眾網(wǎng)站;2.設(shè)置隱藏字段(Honeypot技術(shù)),利用機(jī)器人自動(dòng)填寫(xiě)特性識(shí)別垃圾評(píng)論,不影響用戶體驗(yàn);3.檢查評(píng)論內(nèi)容關(guān)鍵詞黑名單,通過(guò)敏感詞匹配過(guò)濾垃圾信息,需注意避免誤判;4.判斷評(píng)論頻率與來(lái)源IP,限制單位時(shí)間內(nèi)的提交次數(shù)并建立黑名單;5.使用第三方反垃圾服務(wù)(如Akismet、Cloudflare)提升識(shí)別準(zhǔn)確性??筛鶕?jù)網(wǎng)站

在開(kāi)發(fā)Gutenberg塊時(shí),正確enqueue資產(chǎn)的方法包括:1.使用register_block_type指定editor_script、editor_style和style的路徑;2.在functions.php或插件中通過(guò)wp_register_script和wp_register_style注冊(cè)資源,并設(shè)置正確的依賴和版本;3.配置構(gòu)建工具輸出合適的模塊格式,并確保路徑一致;4.通過(guò)add_theme_support或enqueue_block_assets控制前端樣式的加載邏輯,確保

要添加自定義用戶字段需根據(jù)平臺(tái)選擇擴(kuò)展方式并注意數(shù)據(jù)驗(yàn)證與權(quán)限控制。常見(jiàn)做法包括:1.利用數(shù)據(jù)庫(kù)額外表或鍵值對(duì)結(jié)構(gòu)存儲(chǔ)信息;2.在前端加入輸入框并與后端集成;3.對(duì)敏感數(shù)據(jù)進(jìn)行格式校驗(yàn)和訪問(wèn)權(quán)限限制;4.更新接口及模板以支持新字段展示與編輯,同時(shí)兼顧移動(dòng)端適配和用戶體驗(yàn)。

robots.txt對(duì)WordPress網(wǎng)站的SEO至關(guān)重要,能引導(dǎo)搜索引擎抓取行為,避免重復(fù)內(nèi)容并提升效率。1.屏蔽如/wp-admin/、/wp-includes/等系統(tǒng)路徑,但避免誤封/uploads/目錄;2.添加Sitemap路徑如Sitemap:https://yourdomain.com/sitemap.xml以幫助搜索引擎快速發(fā)現(xiàn)站點(diǎn)地圖;3.限制/page/和帶參數(shù)的URL以減少爬蟲(chóng)浪費(fèi),但需注意勿封重要?dú)w檔頁(yè);4.避免常見(jiàn)錯(cuò)誤如誤封全站、緩存插件影響更新及忽略移動(dòng)端與子域名配
