• <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 那誰 閱讀(5765) 評論(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
            久久99国产精品久久久| 久久久久噜噜噜亚洲熟女综合| 久久伊人色| 久久久91人妻无码精品蜜桃HD| 99久久国产亚洲高清观看2024| 91精品国产高清久久久久久91 | 91精品国产9l久久久久| 人妻无码中文久久久久专区| 欧美喷潮久久久XXXXx| 久久午夜伦鲁片免费无码| 麻豆一区二区99久久久久| 91久久精一区二区三区大全| 国产99久久精品一区二区| 欧美久久综合性欧美| 97久久精品人人做人人爽| 精品国产热久久久福利| 亚洲а∨天堂久久精品| 亚洲色婷婷综合久久| 国产午夜福利精品久久2021| 狠狠色丁香婷婷久久综合| 久久精品国产乱子伦| 97久久综合精品久久久综合 | 日本三级久久网| 久久久久18| 久久夜色精品国产噜噜噜亚洲AV| 国产成人久久AV免费| 久久se精品一区精品二区国产 | 很黄很污的网站久久mimi色| 伊人伊成久久人综合网777| 热re99久久6国产精品免费| 亚洲国产精品热久久| 久久精品久久久久观看99水蜜桃| 7777久久亚洲中文字幕| 久久夜色精品国产噜噜亚洲a| 久久久久人妻精品一区 | 久久精品国产久精国产| 色偷偷88欧美精品久久久| 久久精品国产亚洲av麻豆色欲 | 色偷偷88888欧美精品久久久| 国产99久久久国产精品~~牛 | 久久国产精品无|