SEO優化

在網站開發優化過程中避免不了要使用SEO優化,一般會生成sitemap.xml文件供搜索引擎抓取。

如何生成sitemap.xml文件呢。

1.一般我們把需要放到sitemap.xml文件中的數據分類生成,比如說一個網站中的文章,活動,產品,這時候我們要分類生成sitemap.xml文件,因此我們先生成一個sitemapindex.xml文件,存放分類生成的sitemap.xml文件的地址

例如:

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>http://localhost:8080/shopxx/sitemap/0.xml</loc>
</sitemap>
</sitemapindex>

2.一般一個sitemap.xml文件中存放的條數不能超過40000,所以要獲取某一個分類的總的數量。例如。先獲取文章的總的數量,判斷生成幾個sitemap.xml文件。然後把對應的sitemap.xml文件存放的地址寫入到sitemapindex.xml文件中去

3.分別生成對應的sitemap.xml文件。然後把數據寫入到sitemap.xml文件中去。

4.分類生成的sitemap.xml文件如果比較大,可以生成sitemap.xml.gz文件也是可以的。具體看每個分類生的文件的大小

生成sitemap.xml文件以及寫入數據

OutputFormat format = OutputFormat.createPrettyPrint();//格式化生成xml文件
XMLWriter writer = new XMLWriter(new FileWriter(siteMap), format);//生成sitemap.xml文件

Document doc = this.createSiteMap(list);//先把數據放入一個doc中

writer.write(doc);//寫入xml文件中

writer.close();//關閉writer

//如實需要壓縮sitemap.xml文件。可以接着寫

this.compressFile(new File(siteMap), true);

寫入數據:
private Document createSiteMap(List<SeoVO> list) {
Document doc = DocumentHelper.createDocument();
// 添加根節點
Element urlset = doc.addElement("urlset",
"http://www.sitemaps.org/schemas/sitemap/0.9");
// 添加文章的sitemap文件鏈接
for (int i = 0; i < list.size(); i++) {
Element url = urlset.addElement("url");
Element loc = url.addElement("loc");
loc.addText(list.get(i).getLoc());
Element lastmod = url.addElement("lastmod");
lastmod.addText(list.get(i).getLastmod());
Element changefreq = url.addElement("changefreq");
changefreq.addText(list.get(i).getChangefreq());
Element priority = url.addElement("priority");
priority.addText(list.get(i).getPriority());
}
return doc;
}


生成sitemap.xml.gz的方法

//讀取sitemap.xml文件生成File

File file = new File(”sitemap.xml“);

private void compressFile(File file, boolean delete) throws Exception{  

//delete表示生成壓縮文件以後,刪掉原文件
        FileInputStream fis = new FileInputStream(file);  
        FileOutputStream fos = new FileOutputStream(file.getPath() + SUFFIX);  
        this.compress(fis, fos);
        fis.close();  
        fos.flush();  
        fos.close();    
        if (delete) {  
            file.delete();  
        }  
    }  
    private void compress(InputStream is, OutputStream os)  
            throws Exception {    
        GZIPOutputStream gos = new GZIPOutputStream(os);    
        int count;  
        byte data[] = new byte[BUFFER];  
        while ((count = is.read(data, 0, BUFFER)) != -1) {  
            gos.write(data, 0, count);  
        }   
        gos.finish();    
        gos.flush();  
        gos.close();  
    } 
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章