最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

dedecms負(fù)載性能優(yōu)化實(shí)例,三招讓你的dedecms快10倍以上

 更新時(shí)間:2021年05月12日 11:27:56   投稿:mdxy-dxy  
對(duì)dedecms表現(xiàn)出來(lái)的相對(duì)較差的性能也感覺比較迷惑,到底是什么在制約其負(fù)載效率?難道真的是某些腦殘的dede論壇版主說(shuō)的是因?yàn)閙ysql不堪重負(fù)的原因嗎?

解決問(wèn)題

        對(duì)于list查詢來(lái)說(shuō),arc.typeid2='1′這個(gè)條件目的是查找某個(gè)文章所屬的第二分類,而事實(shí)上這個(gè)功能在大部分情況下很少使用,因?yàn)槲覀兇罂墒褂脴?biāo)簽(tag)來(lái)完成一篇文章的多個(gè)不同分類的歸屬,因此我們修改文件inc_arclist_view.php,在查詢語(yǔ)句中直接刪除了typeid2的條件判斷,并在pub_db_mysql.php中改進(jìn)了查詢執(zhí)行函數(shù)(主要用于提高sql語(yǔ)句執(zhí)行的效率,對(duì)最終結(jié)果影響不大),得到的最終測(cè)試結(jié)果如下,平均每個(gè)列表頁(yè)面的生成時(shí)間下講到不到1秒,3萬(wàn)數(shù)據(jù)600個(gè)列表頁(yè)面生成只需要花費(fèi)不到10分鐘,優(yōu)化目標(biāo)達(dá)成。

優(yōu)化后的列表頁(yè)面生成速度

3.改進(jìn)文檔管理效率

問(wèn)題提出

        在90萬(wàn)這個(gè)數(shù)據(jù)量的情況下,dedecms打開欄目文章列表,尤其是打開所有檔案列表企圖進(jìn)行文章管理的時(shí)候,速度簡(jiǎn)直無(wú)法讓人忍受。我們點(diǎn)擊所有文檔列表,耐著性子等了將近2分鐘,文章列表頁(yè)面才姍姍來(lái)遲。到底什么在制約著文章列表速度呢?

優(yōu)化前使用所有檔案列表數(shù)據(jù)加載完成時(shí)間

分析問(wèn)題

        控制顯示文檔列表的程序是dede/content_list.php和include/pub_datalist_dm.php,其中content_list.php是主控制程序,完成列表的參數(shù)傳遞和模板顯示,而pub_datalist_dm.php用于完成數(shù)據(jù)查詢和分頁(yè)等操作。通過(guò)程序調(diào)試,我們找到了問(wèn)題的結(jié)癥在于pub_datalist_dm.php程序中對(duì)于全部數(shù)據(jù)的統(tǒng)計(jì)花費(fèi)了大量的時(shí)間,而使用limit的列表數(shù)據(jù)的查詢并不是性能的瓶頸。影響效率的關(guān)鍵代碼為:

$this->dsql->Query();
$this->totalResult = $this->dsql->GetTotalRow();

        這里所用的數(shù)據(jù)總數(shù)統(tǒng)計(jì)的方式居然是通過(guò)content_list.php傳遞過(guò)來(lái)一個(gè)復(fù)雜的查詢語(yǔ)句,然后執(zhí)行這個(gè)查詢并將結(jié)果保存到數(shù)據(jù)集中,最后通過(guò)mysql_num_rows函數(shù)統(tǒng)計(jì)結(jié)果集中行的數(shù)目,完全沒有想到dedecms居然走了一個(gè)最遠(yuǎn)的路途完成一個(gè)最簡(jiǎn)單的操作,難怪效率低得可怕。因此只要我們改用最常見的count方法來(lái)統(tǒng)計(jì)數(shù)據(jù),執(zhí)行效率就能大幅提高。

解決問(wèn)題

        首先我們修改了程序content_list.php,構(gòu)造了$conutquery參數(shù)用來(lái)保存統(tǒng)計(jì)使用的SQL語(yǔ)句,代碼如下:

……
$conutquery=”
select count(*) as totalResult
from #@__archives
left join #@__arctype on #@__arctype.ID=#@__archives.typeid
left join #@__channeltype on #@__channeltype.ID=#@__archives.channel
left join #@__admin on #@__admin.ID=#@__archives.adminID
$whereSql
order by #@__archives.{$orderby} desc”;
……

        然后將這個(gè)參數(shù)和查詢$query參數(shù)一起傳遞給pub_datalist_dm.php進(jìn)行處理。

$dlist->SetSource($query,$conutquery);

        隨后將pub_datalist_dm.php中獲得數(shù)據(jù)總數(shù)統(tǒng)計(jì)的代碼替換為使用$conutquery參數(shù):

……
//統(tǒng)計(jì)優(yōu)化
$row = $this->dsql->GetOneSimple($this->countSql);
$this->totalResult = $row['totalResult'];
……

        其中GetOneSimple是新構(gòu)造的一個(gè)用來(lái)執(zhí)行SQL語(yǔ)句的函數(shù),我把它放在了pub_db_mysql.php類里面,主要的用途就是返回SQL語(yǔ)句執(zhí)行結(jié)果, $this->countSql是上一個(gè)程序傳遞過(guò)來(lái)的統(tǒng)計(jì)使用的SQL代碼,$this->totalResult用來(lái)記錄數(shù)據(jù)統(tǒng)計(jì)結(jié)果。程序修改之后,獲得了滿意的效果。

優(yōu)化后使用所有檔案列表數(shù)據(jù)加載完成時(shí)間

總結(jié)

        通過(guò)對(duì)以上幾步優(yōu)化操作,現(xiàn)在我們的程序后臺(tái)已經(jīng)能夠非常輕松的應(yīng)付90萬(wàn)數(shù)據(jù)的管理和維護(hù)了,事實(shí)證明dedecms的負(fù)載性能的瓶頸并不是mysql、服務(wù)器或者操作系統(tǒng)平臺(tái)等,如果把未經(jīng)優(yōu)化的程序放到oracle的數(shù)據(jù)庫(kù)上,使用更高級(jí)別的服務(wù)器,使用freebsd的操作系統(tǒng),表現(xiàn)一樣會(huì)不盡如人意。細(xì)節(jié)決定成敗,看起來(lái)dedecms必須要在程序調(diào)優(yōu)、性能優(yōu)化上好好下功夫了。想了解更詳細(xì)的解決方案,請(qǐng)加入我們交流。

下面是其他網(wǎng)友的補(bǔ)充

前文介紹了DedeCMS欄目列表頁(yè)實(shí)現(xiàn)完美分頁(yè)的方法,避免了大部分重復(fù)欄目標(biāo)題對(duì)搜索引擎的影響,對(duì)SEO更有利。今天,分享一下DedeCMS數(shù)據(jù)負(fù)載性能優(yōu)化的方法。

接觸織夢(mèng)也有三年多時(shí)間了,對(duì)它可謂是又愛又恨。它的模板簡(jiǎn)單易用,標(biāo)簽調(diào)用更是靈活,二次開發(fā)也非常方便??墒?,站點(diǎn)數(shù)據(jù)龐大起來(lái)的時(shí)候(30多 萬(wàn)條),后臺(tái)就會(huì)變得異常緩慢,生成HTML也很吃力,毫不夸張的說(shuō),頭發(fā)都等白了。這不禁讓我對(duì)DedeCMS數(shù)據(jù)負(fù)載性能產(chǎn)生了置疑?

查閱了相關(guān)資料,結(jié)合自身站點(diǎn)實(shí)際,還是總結(jié)出了一套不錯(cuò)的DedeCMS數(shù)據(jù)負(fù)載性能優(yōu)化方案。廢話不說(shuō),直接進(jìn)入正題。

1)數(shù)據(jù)分表存儲(chǔ) 減輕數(shù)據(jù)單表壓力

自織夢(mèng)V5版本起,DedeCMS開始分表存儲(chǔ)以提高系統(tǒng)負(fù)載性能,確實(shí)在一定程度上緩解了數(shù)據(jù)壓力。現(xiàn)在最新的DedeCMS V5.7版本已經(jīng)出來(lái)了,據(jù)官方介紹,V5.7調(diào)整了緩存處理,應(yīng)付50萬(wàn)以內(nèi)數(shù)據(jù)沒問(wèn)題,至于真實(shí)性無(wú)從考究。如果官方陳述屬實(shí)的話,對(duì)于中小型站長(zhǎng)來(lái) 說(shuō)確實(shí)是件好事,正常百萬(wàn)級(jí)內(nèi)數(shù)據(jù)也不用過(guò)多擔(dān)心了。

分表存儲(chǔ)如何操作?

如果你只是個(gè)人或企業(yè)等小型站點(diǎn),數(shù)據(jù)量也就撐死上萬(wàn),那完全不用考慮分表存儲(chǔ),DedeCMS完全可以勝任。分表操作很簡(jiǎn)單,你只需要直接進(jìn)入后 臺(tái),新建模型,然后設(shè)置一個(gè)欄目對(duì)應(yīng)一個(gè)模型。個(gè)人建議一個(gè)大的頻道欄目及子欄目對(duì)應(yīng)一個(gè)模型,這要根據(jù)你的欄目可能存儲(chǔ)的數(shù)據(jù)來(lái)做計(jì)劃,考慮實(shí)際一點(diǎn)的 分表方案。

2)修改系統(tǒng)參數(shù) arclist標(biāo)簽另類優(yōu)化

在DedeCMS V5版本中,官方其實(shí)已經(jīng)做了極力優(yōu)化,引入了緩存機(jī)制。其實(shí)影響HTML生成速度的罪魁禍?zhǔn)走€是模板中的arclist標(biāo)簽,很多站長(zhǎng)喜歡用 arclist標(biāo)簽來(lái)調(diào)用最新、熱門、推薦、頭條等文章列表,但是arclist標(biāo)簽每次都帶著一大堆條件去主表中查詢,可能還會(huì)關(guān)聯(lián)附加表,對(duì)一次性生 成大量文章來(lái)說(shuō),只是重復(fù)使用arclist標(biāo)簽對(duì)數(shù)據(jù)庫(kù)重復(fù)查詢罷了,自然會(huì)花去大量時(shí)間?,F(xiàn)在DedeCMS新的版本中,生成HTML時(shí)arclist標(biāo)簽會(huì)直接調(diào)用緩存數(shù)據(jù),省去arclist標(biāo)簽重復(fù)查詢數(shù)據(jù)庫(kù)的時(shí)間,頓時(shí)讓上述工作變得輕松起來(lái),生成速度得到提升也是必然的。你只用在系統(tǒng)參數(shù)->性能選項(xiàng)中,找到arclist標(biāo)簽調(diào)用緩存(cfg_index_cache)(0 不啟用,大于0值為多少秒),根據(jù)自身實(shí)際需求調(diào)整緩存調(diào)用時(shí)間。

其實(shí),還有一種解決辦法,就是麻煩了一些,但是對(duì)性能提升是非常顯著的。arclist 標(biāo)簽調(diào)用緩存雖說(shuō)一定程度上提高了HTML生成速度,但是還是需要對(duì)arclist緩存進(jìn)行判斷,如果能把這部分時(shí)間也省去,那是不是會(huì)更快呢?答案是肯 定確定以及雙重否定。我們可以通過(guò)freelist(自由列表)功能事先生成最新、熱門、推薦、頭條等文章列表頁(yè)面,然后用include標(biāo)簽直接引入到 模板里,標(biāo)簽格式為:{dede:include file='文章列表頁(yè)面文件名稱' ismake=' no'/}。如果你的站長(zhǎng)數(shù)據(jù)很龐大,服務(wù)器硬件配置也一般的話,何不嘗試一下呢?

另外,系統(tǒng)參數(shù)-核心設(shè)置里默認(rèn)的關(guān)鍵字替換功能(cfg_keyword_replace)是開啟的,如果文章是采集過(guò)來(lái)的,還是關(guān)閉的好,有很多關(guān)鍵字都毫無(wú)意義,甚至?xí)衼y碼導(dǎo)致生成出錯(cuò),關(guān)掉此功能對(duì)提高系統(tǒng)性能是有一定幫助的。

3)數(shù)據(jù)庫(kù)表索引優(yōu)化 性能大幅提升

為什么要對(duì)DedeCMS數(shù)據(jù)庫(kù)表索引進(jìn)行優(yōu)化呢?很簡(jiǎn)單,在Mysql中,索引無(wú)疑是最有效的加快查詢的工具了,一個(gè)合理的索引組合會(huì)極大地提升 你的查詢效率和系統(tǒng)性能。言歸正傳,你可以通過(guò)phpmyadmin或是一個(gè)叫Navicat for MySQL的軟件(推薦)來(lái)管理你的數(shù)據(jù)庫(kù)。

分析DEDECMS數(shù)據(jù)表信息,不難發(fā)現(xiàn),所有的文章數(shù)據(jù)是存儲(chǔ)在dede_archives和dede_arctiny,以及對(duì)應(yīng)的 dede_addonarticle附加表中的。生成HTML時(shí),sql查詢主要圍繞這三張表來(lái)的。個(gè)人認(rèn)為,凡是要排序的字段和查詢條件的字段及文檔 ID都要建立索引,如果一個(gè)沒有建立,將會(huì)嚴(yán)重影響MySQL的查詢效率,最終導(dǎo)致生成速度變慢。DEDECMS數(shù)據(jù)表索引建立方法如下:

a)dede_archives,是文章的主表,存儲(chǔ)文章標(biāo)題、關(guān)鍵 字、描述、發(fā)布時(shí)間等信息,10萬(wàn)數(shù)據(jù)的表大小可能在30MB左右,也是我們優(yōu)化的重點(diǎn)。你需要建立的索引字段有,id、channel、 pubdate、sortrank、ismake、typeid、mainindex、lastpost;其中,像系統(tǒng)默認(rèn)的mainindex和 lastpost這兩個(gè)組合索引,個(gè)人認(rèn)為存在意義不大,可以刪除,自己掂量。需要注意的是,click字段,是文檔的點(diǎn)擊數(shù),此字段更新頻率,建立索引 后會(huì)對(duì)系統(tǒng)維護(hù)帶來(lái)一定壓力,另外也有人說(shuō)頻繁更新的建立索引會(huì)容易導(dǎo)致數(shù)據(jù)庫(kù)損壞,也無(wú)從查證。個(gè)人建議click字段保留,不建立索引。

b)dede_arctiny,這個(gè)表比較小,10萬(wàn)數(shù)據(jù)的表大小不到5MB,建議不建立索引,可以將自帶的刪除掉,或者只保留sortrank索引。

c)dede_addonarticle,是文章附加表,主要是用來(lái)存儲(chǔ)文章內(nèi)容的,不作索引考慮。

以上索引成功建立后,再測(cè)試下你的HTML生成速度,是不是讓你精神一振呢?

4)搭建勝過(guò)Apache十倍的高并發(fā)Web服務(wù)器 Nginx + PHP(FastCGI)

Web服務(wù)器的重要性不需多言,對(duì)提升網(wǎng)站性能有著直接影響。在PHP開發(fā)中,最常用的環(huán)境莫過(guò)于在 LAMP:Linux+apache+mysql+php了,在windows下有 WAMP:Windows+apache/iis+mysql+php,我的WEB站點(diǎn)也是在這種環(huán)境下開發(fā)的。Nginx + PHP(FastCGI)無(wú)疑是你最好的選擇,在Windows和Linux下都可以安裝,只是Windows下的Nginx表現(xiàn)要遠(yuǎn)遠(yuǎn)遜色于Linux。

DedeCMS系統(tǒng)運(yùn)行是依賴PHP+MYSQL環(huán)境的,所以說(shuō)一個(gè)運(yùn)行快、資源消耗小的Web服務(wù)器對(duì)提升系統(tǒng)性能有多重要。如果條件允許的條件,還是推薦下Nginx + PHP(FastCGI)這種WEB服務(wù)器環(huán)境。

以上就是DedeCMS數(shù)據(jù)負(fù)載性能的優(yōu)化方案,針對(duì)的是有獨(dú)立WEB服務(wù)器或控制權(quán)限的站長(zhǎng),至于虛擬主機(jī)想 達(dá)到這個(gè)速度還是很費(fèi)勁的,但是也可以作為DedeCMS性能優(yōu)化的一個(gè)參考依據(jù),自己琢磨琢磨了。當(dāng)然,如果有更好的提高DedeCMS數(shù)據(jù)負(fù)載性能的 辦法,還希望分享下。其實(shí),正常情況下(不包括采集),一般站點(diǎn)數(shù)據(jù)量也都有限,20萬(wàn)就很了不起了吧?我想,以上的DedeCMS優(yōu)化方案足以解決了。 真到了百萬(wàn)級(jí)、千萬(wàn)級(jí)數(shù)據(jù)的時(shí)候,也不是一般站長(zhǎng)需要考慮的事了。

相關(guān)文章

  • DEDE添加迅雷專用鏈接(半迅雷化)

    DEDE添加迅雷專用鏈接(半迅雷化)

    半迅雷化專用鏈接,原來(lái)的地址仍然會(huì)顯示,不利于隱藏真實(shí)下載地址,真實(shí)下載地址可直接通過(guò)源文件看到
    2008-11-11
  • dedecms v5.1 WriteBookText() code injection vul注入漏洞

    dedecms v5.1 WriteBookText() code injection vul注入漏洞

    來(lái)源:Ph4nt0m Google Group by Flyh4t@126.com QQ:378367942
    2008-05-05
  • dedecms織夢(mèng)模板引擎標(biāo)簽工作原理

    dedecms織夢(mèng)模板引擎標(biāo)簽工作原理

    織夢(mèng)模板引擎是一種使用XML名字空間形式的模板解析器,使用織夢(mèng)解析器解析模板的最大好處是可以輕松的制定標(biāo)記的屬性,感覺上就像在用HTML一樣,使模板代碼十分直觀靈活,新版的織夢(mèng)模板引擎不單能實(shí)現(xiàn)模板的解析還能分析模板里錯(cuò)誤的標(biāo)記。
    2022-12-12
  • DEDE 24小時(shí)內(nèi)發(fā)布的信息日期為紅色

    DEDE 24小時(shí)內(nèi)發(fā)布的信息日期為紅色

    主要是學(xué)習(xí)他的思路,以后我們就能很方便的增加功能了
    2008-08-08
  • dedecms統(tǒng)計(jì)欄目文章數(shù)量實(shí)現(xiàn)代碼修訂版

    dedecms統(tǒng)計(jì)欄目文章數(shù)量實(shí)現(xiàn)代碼修訂版

    以下的實(shí)現(xiàn)辦法為修訂的方法,可實(shí)現(xiàn)任意指定欄目的文章數(shù)量統(tǒng)計(jì),包括最終列表欄目和含有子欄目的欄目。
    2008-03-03
  • DEDE最簡(jiǎn)方式教你縮短軟件列表的方法

    DEDE最簡(jiǎn)方式教你縮短軟件列表的方法

    相信不少朋友用DEDE在做下載站吧,DEDE確實(shí)是廣大站長(zhǎng) 朋友的建站利器啊,偶也在用??捎弥l(fā)現(xiàn)當(dāng)中后臺(tái)添加軟件 時(shí),軟件的列表過(guò)長(zhǎng),導(dǎo)致頁(yè)面打開比較慢,而且軟件也不容易 找,好了,廢話不多說(shuō),自己看吧。
    2008-03-03
  • dedecms tags keywords問(wèn)題修正方法

    dedecms tags keywords問(wèn)題修正方法

    由于在經(jīng)常的使用過(guò)程中,我們添加信息一般都是不填寫keywords的,我們只填寫了tags,而這兩者我們一般情況下是一樣的。所以我給修改了下。
    2008-11-11
  • dedecms采集過(guò)濾常用代碼集合

    dedecms采集過(guò)濾常用代碼集合

    dede采集過(guò)程中最麻煩的莫過(guò)于采集的正則過(guò)濾函數(shù)的編寫。說(shuō)實(shí)在的,dede在這點(diǎn)上和很多ASP CMS系統(tǒng)比如說(shuō)動(dòng)易等,采集的時(shí)候直接選擇幾個(gè)選項(xiàng)就可以了,簡(jiǎn)單的完成想過(guò)濾的東西。不過(guò)他們只局限于對(duì)文章內(nèi)容的過(guò)濾不是很好。而DEDE卻能對(duì)所有采集的字段進(jìn)行過(guò)濾,功能上彌補(bǔ)了易用性的缺陷,期待柏拉圖在后續(xù)版本中加上選擇性過(guò)濾功能。
    2008-03-03
  • 實(shí)現(xiàn)dedecms圖集單擊圖片翻頁(yè)的功能

    實(shí)現(xiàn)dedecms圖集單擊圖片翻頁(yè)的功能

    題記:在很多相冊(cè)的網(wǎng)站中,都有這樣的功能:當(dāng)圖片分多頁(yè)顯示的情況下,點(diǎn)擊圖片會(huì)自動(dòng)翻頁(yè)到下一張圖片,接下來(lái)我們?cè)赿edecms4中實(shí)現(xiàn)這個(gè)功能。以下是實(shí)現(xiàn)方法:
    2008-03-03
  • DEDECMS實(shí)用漂亮的翻頁(yè)效果修改方法

    DEDECMS實(shí)用漂亮的翻頁(yè)效果修改方法

    有時(shí)候大家感覺dedecms的內(nèi)容分頁(yè)不太好看,下面的方法你就可以做出更好的分頁(yè)效果代碼
    2008-10-10

最新評(píng)論

嘉黎县| 白朗县| 固安县| 财经| 德安县| 漳平市| 正宁县| 赤壁市| 兴宁市| 佛教| 家居| 于都县| 凤台县| 衡东县| 临海市| 桂阳县| 清徐县| 浦北县| 凤庆县| 陇川县| 红安县| 晋江市| 塘沽区| 临潭县| 攀枝花市| 禹城市| 乌兰察布市| 台东市| 叙永县| 丹东市| 长乐市| 定州市| 洱源县| 永年县| 深圳市| 青阳县| 岫岩| 冷水江市| 柞水县| 沅陵县| 麻城市|