大型网站页面静态化解决方案

在开发大型网站时,避免不了处理大量的页面静态化操作,这样方便加快网站访问速度与流量分流,那么如何来实现呢?其实说白了比较简单,网站静态化主要包括以下几方面的工作:

  1. 多个文件服务器读写,这里可采用SMB协议
  2. 页面静态化,可采用freemarker开源框架
  3. 如果考虑到大量的读写请求,则将请求分布式或采用调度的办法来解决

第一点我们首先应该考虑文件服务器与静态页面的映射关系,即什么文件应该读写到哪台服务器,这个关系最简单的办法是随机映射,然后将映射关系保存到数据库中即可,SMB常用的操作代码如下:

package org.manggo.test;

import java.net.MalformedURLException;

import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;

public class SmbTest {

 public static boolean exists(String filepath, String username, String pwd) throws MalformedURLException{
  SmbFile file = new SmbFile(“smb://” + username + “:” + pwd + “@” + filepath);
  try {
   return file.exists();
  } catch (Exception ex) {
   return false;
  }
 }

 public static boolean fileRename(String filepath, String newFilename, String username, String pwd) throws MalformedURLException, SmbException {
   SmbFile f = new SmbFile(“smb://” + username + “:” + pwd + “@” + filepath);
   if (f.isFile()) {
    String str = filepath.substring(0, filepath.lastIndexOf(“/”));
    str = “smb://” + username + “:” + pwd + “@” + str + “/” + newFilename;
    f.renameTo(new SmbFile(str));
   } else if (f.isDirectory()) {
    String str = filepath.substring(0, filepath.length() – 1);
    str = filepath.substring(0, str.lastIndexOf(“/”));
    str = “smb://” + username + “:” + pwd + “@” + str + “/” + newFilename;
    f.renameTo(new SmbFile(str));
   }
   return true;
 }

 public static void mkdir(String dir, String username, String pwd) {
  try {
   SmbFile f = new SmbFile(“smb://” + username + “:” + pwd + “@” + dir);
   if (!f.exists())
    f.mkdir();
  } catch (Exception ex) {
  }
 }

 public static void mkfile(String filepath, String username, String pwd) {
  try {
   SmbFile f = new SmbFile(“smb://” + username + “:” + pwd + “@” + filepath);
   if (!f.exists())
    f.createNewFile();
  } catch (Exception ex) {
  }
 }

 public static void mkfile(String filepath, String username, String pwd, String content) {
  try {
   SmbFile f = new SmbFile(“smb://” + username + “:” + pwd + “@” + filepath);
   if (!f.exists())
    f.createNewFile();
   //writeFile(filepath, content, username, pwd);
  } catch (Exception ex) {
  }
 }

 public static boolean isdir(String filepath, String username, String pwd) throws MalformedURLException, SmbException {
  String dir = “smb://” + username + “:” + pwd + “@” + filepath;
  SmbFile f = new SmbFile(dir);
  return f.isDirectory();
 }

 public static void main(String[] args) {
  SmbTest.mkdir(“192.168.100.188/wwwroot/test”, “hongquanli”, “87483281″);
  
  try{
   SmbFile smbFile=new SmbFile(“smb://hongquanli:87483281@192.168.100.188/wwwroot/index.htm”);
   //通过 smbFile.isDirectory();isFile()可以判断smbFile是文件还是文件夹
   int length=smbFile.getContentLength();//得到文件的大小
   byte buffer[] = new byte[length] ;
   SmbFileInputStream in = new SmbFileInputStream(smbFile) ;  //建立smb文件输入流
   while((in.read(buffer)) != -1){
    System.out.write(buffer);
    System.out.println(buffer.length);
   }
   in.close();
  }catch(Exception e){
   e.printStackTrace();
  }
 }
 
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值