SEO优化

来源:互联网 发布:Java建立图书类 编辑:程序博客网 时间:2024/05/03 20:17

在网站开发优化过程中避免不了要使用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();  
    } 
}

0 0
原创粉丝点击