• <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>

            那誰的技術博客

            感興趣領域:高性能服務器編程,存儲,算法,Linux內核
            隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
            數據加載中……

            lighttpd1.4.18中的stat_cache

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

            下面來具體看這個cache的實現,我也不貼代碼了,還是看偽代碼好了,關于這部分實現,可以看lighttpd中的stat_cache.c文件:
            根據查找的文件名算出一個hash值,
            根據這個hash值去sptree中搜索,這個結構體中cache住之前查詢的結果
            假如可以在cache中找到記錄,還要將記錄的時間與服務器當前的時間做比較,如果一致才認為是找到了cache,返回結果.

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

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

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


            提到cache目錄信息這一點,lighttpd采用了FAM的API,使用這個API,可以把需要監控是否發生變化的目錄加入到一個集合中,這個集合可以對應一個fd,這樣,就可以select/epoll等多路復用I/O處理器在文件目錄情況發生變化的時候去異步通知服務器更新cache中關于該目錄的情況了.

            關于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 那誰 閱讀(5801) 評論(4)  編輯 收藏 引用 所屬分類: 服務器設計lighttpd

            評論

            # re: lighttpd1.4.18中的stat_cache  回復  更多評論   

            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  回復  更多評論   

            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  回復  更多評論   

            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  回復  更多評論   

            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  回復  更多評論   

            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
            女人香蕉久久**毛片精品| 欧美色综合久久久久久| 婷婷久久精品国产| 午夜不卡888久久| 久久婷婷成人综合色综合| 一本一本久久a久久综合精品蜜桃| 久久99精品免费一区二区| 韩国无遮挡三级久久| 国产精品9999久久久久| 久久99精品国产99久久6男男| AV无码久久久久不卡网站下载| 国产成人精品久久| 久久人人爽人人爽人人AV| 久久久一本精品99久久精品66| 精品国产乱码久久久久久郑州公司 | 性做久久久久久久久久久| 国产精品免费久久久久电影网| 91麻精品国产91久久久久| 国产精品九九久久免费视频 | 国产精品99久久99久久久| 亚洲AV乱码久久精品蜜桃| 久久AV高清无码| 99久久精品免费| 无码任你躁久久久久久久| 亚洲欧美日韩久久精品第一区| 青青草原精品99久久精品66| 久久99中文字幕久久| 久久精品成人欧美大片| 久久精品国产乱子伦| 久久久久久久综合日本亚洲| 久久婷婷五月综合成人D啪| 久久久久久久久久久久久久 | 精品国产99久久久久久麻豆| 色欲综合久久中文字幕网| 国产精品久久久天天影视香蕉| 亚洲色欲久久久久综合网| 亚洲人成精品久久久久| 国产精品热久久无码av| 久久精品一本到99热免费| 日本免费一区二区久久人人澡 | 久久97久久97精品免视看秋霞|