• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            那誰的技術(shù)博客

            感興趣領(lǐng)域:高性能服務(wù)器編程,存儲(chǔ),算法,Linux內(nèi)核
            隨筆 - 210, 文章 - 0, 評(píng)論 - 1183, 引用 - 0
            數(shù)據(jù)加載中……

            lighttpd1.4.18中的stat_cache

            這個(gè)cache主要是針對(duì)stat()函數(shù)調(diào)用結(jié)果的一個(gè)cache,這么做有兩個(gè)考慮,一個(gè)當(dāng)然是緩存stat()函數(shù)調(diào)用的結(jié)果,比如需要向客戶端發(fā)送一個(gè)文件的內(nèi)容時(shí),需要知道這個(gè)文件的尺寸,一般都是通過stat()調(diào)用得來;如果僅僅是這樣,那似乎這個(gè)cache是沒有太大必要的,所以還有第二層的考量,http協(xié)議中有一個(gè)所謂的etag的概念,比如你接收了一個(gè)文件,http協(xié)議中帶了一個(gè)字段last-modified存放這個(gè)文件請(qǐng)求的時(shí)間,同時(shí)有針對(duì)這個(gè)文件的etag值,下一次再次請(qǐng)求時(shí),如果該文件沒有更新過,那么直接使用客戶端瀏覽器中緩存的結(jié)果即可.有關(guān)這部分的內(nèi)容可以參考這里. 這里,關(guān)于"文件是否被更改過",在lighttpd中,有三種判斷的標(biāo)準(zhǔn),分別是typedef enum { ETAG_USE_INODE = 1, ETAG_USE_MTIME = 2, ETAG_USE_SIZE = 4 } etag_flags_t; 簡單的理解,就是從inode number值,mtime(修改時(shí)間),文件尺寸三種標(biāo)準(zhǔn)來判斷,而這些,都是可以從stat函數(shù)的返回值也就是stat 結(jié)構(gòu)體中獲得的.

            下面來具體看這個(gè)cache的實(shí)現(xiàn),我也不貼代碼了,還是看偽代碼好了,關(guān)于這部分實(shí)現(xiàn),可以看lighttpd中的stat_cache.c文件:
            根據(jù)查找的文件名算出一個(gè)hash值,
            根據(jù)這個(gè)hash值去sptree中搜索,這個(gè)結(jié)構(gòu)體中cache住之前查詢的結(jié)果
            假如可以在cache中找到記錄,還要將記錄的時(shí)間與服務(wù)器當(dāng)前的時(shí)間做比較,如果一致才認(rèn)為是找到了cache,返回結(jié)果.

            程序繼續(xù)往下走,這個(gè)時(shí)候只有兩種可能,一種是沒有找到,另一種找到了但是時(shí)間不對(duì)應(yīng),因此很可能cache中的信息已經(jīng)過期了.
            此時(shí),需要到文件所在的目錄去查找,對(duì)于緩存目錄結(jié)果的cache而言,如果找到了需要查看緩存數(shù)據(jù)的版本號(hào),以這個(gè)來定義是否一致
            假如找到了目錄信息,版本號(hào)也一致,并且之前也找到了文件的cache,那么認(rèn)為cache中緩存的文件信息沒有過時(shí),返回結(jié)果.

            程序繼續(xù)往下走,此時(shí)可以確定cache中要么是沒有要找的信息,要么是信息過期.
            這時(shí)需要真正調(diào)用stat()函數(shù)獲取文件相關(guān)的信息,并且插入到cache中,
            同時(shí),如果文件的目錄信息之前是沒有的,也需要將文件所在目錄的信息插入到cache中,同時(shí)保存cache數(shù)據(jù)的當(dāng)前時(shí)間點(diǎn).

            最后,還需要針對(duì)etag做一些處理,根據(jù)之前說的etag類型將相關(guān)信息存放到cache中,這里只需要etag值不會(huì)重復(fù)就可以.


            提到cache目錄信息這一點(diǎn),lighttpd采用了FAM的API,使用這個(gè)API,可以把需要監(jiān)控是否發(fā)生變化的目錄加入到一個(gè)集合中,這個(gè)集合可以對(duì)應(yīng)一個(gè)fd,這樣,就可以select/epoll等多路復(fù)用I/O處理器在文件目錄情況發(fā)生變化的時(shí)候去異步通知服務(wù)器更新cache中關(guān)于該目錄的情況了.

            關(guān)于FAM API,可以參考這里:
            http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=bks&fname=/SGI_Developer/books/IIDsktp_IG/sgi_html/ch08.html




            posted on 2009-12-16 19:46 那誰 閱讀(5766) 評(píng)論(4)  編輯 收藏 引用 所屬分類: 服務(wù)器設(shè)計(jì) 、lighttpd

            評(píng)論

            # re: lighttpd1.4.18中的stat_cache  回復(fù)  更多評(píng)論   

            I do guess that it is assertable to go to this site, just because simply here students would see the imazing release about this good topic. Thus, the <a href="http://www.master-dissertations.com">thesis writing service</a> should utilize that for thesis titles composing.
            2010-07-09 08:33 | CaroleSTOKES30

            # re: lighttpd1.4.18中的stat_cache  回復(fù)  更多評(píng)論   

            You do a great job. I have already put in a good word your material to friends because I find it very beneficial especially when you need some chapter on your essays or term papers. Thanks again.
            2010-07-09 22:14 | custom essay

            # re: lighttpd1.4.18中的stat_cache  回復(fù)  更多評(píng)論   

            That is possible to receive the data related to custom writing or about this topic in modern world. But before some students buy the written essay, they have to search for the distinguished essay writing service.
            2010-10-07 13:15 | buy term paper

            # re: lighttpd1.4.18中的stat_cache  回復(fù)  更多評(píng)論   

            I could just only imagine about such good talent in dissertation form referring to this good topic creating. We normally take the assistance of the reliable dissertation writing service. In my situation this fits me the best.
            2010-10-09 06:55 | dissertation writing

            # re: lighttpd1.4.18中的stat_cache  回復(fù)  更多評(píng)論   

            Friquently, some guys, which require the term paper online, don’t actually know the best way to get that. But it can be possible to buy an essay online from the great persuasive essay writing service. It’s a standard option for most people.
            2010-10-09 07:00 | pay for writing essay
            国产成人久久精品二区三区| 蜜臀久久99精品久久久久久| 久久99精品久久久久子伦| 久久精品夜夜夜夜夜久久| 久久国产精品无码网站| 日本WV一本一道久久香蕉| 久久久久女人精品毛片| 国产女人aaa级久久久级| 久久综合亚洲鲁鲁五月天| 久久婷婷久久一区二区三区| 日本五月天婷久久网站| 久久精品国产影库免费看 | 国产美女亚洲精品久久久综合| 色88久久久久高潮综合影院 | 尹人香蕉久久99天天拍| 精品午夜久久福利大片| 久久人人爽人人爽人人片AV高清| 久久综合九色综合久99| 99久久做夜夜爱天天做精品| 日本精品久久久中文字幕| 久久综合精品国产二区无码| 亚洲欧美国产精品专区久久 | 久久久久亚洲?V成人无码| 精品国产VA久久久久久久冰| 99蜜桃臀久久久欧美精品网站| 中文字幕亚洲综合久久2| 久久99国产亚洲高清观看首页| 一级做a爰片久久毛片毛片| 久久AAAA片一区二区| 国产成人香蕉久久久久| 国产成人99久久亚洲综合精品| 久久亚洲欧美国产精品| 亚洲va中文字幕无码久久| 久久精品免费全国观看国产| 精品久久久久久久久免费影院| 久久久久18| 人妻无码精品久久亚瑟影视| 欧美伊人久久大香线蕉综合| 久久久久久精品成人免费图片 | 久久国产色AV免费观看| 久久久久久夜精品精品免费啦|