DoraCMS 源碼知識點備註

項目須要研究了下DoraCMS這款開源CMS,真心作的不錯:)。用的框架是經常使用的express 4 + mongoose,代碼也很規範,值得學習。html

源碼中一些涉及到的小知識點備註下:node

https://github.com/doramart/DoraCMSgit

一、Robots協議 github

  1)當搜索引擎訪問到網站目錄時,會判斷當前是否存在Robots.txt;
  2)若存在則按照該文件的要求來限制訪問;
  3)規則:
    User-agent: * 這裏的*表明的全部的搜索引擎種類
    Disallow: /ABC/ 這裏定義是禁止爬尋ABC目錄下面的目錄
    Disallow: /.jpg$ 禁止抓取網頁全部的.jpg格式的圖片
    Disallow:/ab/adc.html 禁止爬取ab文件夾下面的adc.html文件
    Sitemap: 網站地圖 告訴爬蟲這個頁面是網站地圖redis

二、CMS的實現數據庫

  1)利用ueditor及node下插件express

var ueditor = require('ueditor-nodejs');
        app.use('/ueditor/ue', ueditor({//這裏的/ueditor/ue是由於文件件重命名爲了ueditor,若是沒更名,那麼應該是/ueditor版本號/ue
            configFile: '/ueditor/jsp/config.json',//若是下載的是jsp的,就填寫/ueditor/jsp/config.json
            mode: 'local', //本地存儲填寫local
            accessKey: '',//本地存儲不填寫,bcs填寫
            secrectKey: '',//本地存儲不填寫,bcs填寫
            staticPath: path.join(__dirname, 'public'), //通常固定的寫法,靜態資源的目錄,若是是bcs,能夠不填
            dynamicPath: '/upload/blogpicture' 
        }));

  2)ueditor 將編輯的信息以html格式傳入後臺並存儲在數據庫中,上述配置中的dynamicPath實現本地上傳的圖片,即保存一個本地的路徑;json

三、利用res.locals 存儲一些全局變量,模板中能夠直接使用緩存

res.locals.logined = req.session.logined;
res.locals.userInfo = req.session.user;

四、站點地圖session

  1)、一般是sitemap.xml 存儲整個網站的結構, 可方便網站管理員通知搜索引擎他們網站上有哪些可供抓取的網頁;
  2)、在DoraCMS中,sitemap.xml並非本地存儲的文件,而是在用戶訪問時經過讀取數據庫生成,但利用redis緩存,緩存時間爲1天;
    即當天的文檔不更新至緩存;

五、利用validator擴展實現校驗

validator.extend('isEn', function (str) {
        return /^\S+[a-z A-Z]$/.test(str);
        });

六、使用Redis緩存

getContentsCount : function(req,res,cateParentId,cateQuery,callBack){

        cache.get(settings.session_secret + '_' + cateParentId + '_contentCount',function(contentCount){
            if(contentCount) {
                callBack(contentCount);
            }else{
                Content.count(cateQuery,function(err,count){
                    if(err){
                        res.end(err);
                    }else{
                        cache.set(settings.session_secret +  '_' + cateParentId + '_contentCount', count, 1000 * 60 * 60 * 24); // 緩存一天
                        callBack(count)
                    }
                })
            }
        });
    }
相關文章
相關標籤/搜索