jsp文件到底要不要加No-cache

maosenmin 2010-06-01 10:22:11
用Struts2+Spring+Hibernate做的一个web的ERP小项目,总部一台服务器(数据库与Web服务器在同一机子上)是单独拨号上网的,与分公司没有用局域网线,硬件太贵了,其他几个省市分公司都来访问这一服务器,感觉后台代码的效率还可以,包括数据库的执行效率。现在发现分公司访问时很慢,每次新建jsp页面时都是默认的,head部分都会有:<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">。有些界面应用了Struts2的一些标签会自动加载很多js及CSS。像Struts2的日期控件datetimepicker,会加载dojo.js,就这一个文件就258.45KB,如果每个页面头部都有no-cache的话,是不是每次进入有日期控件的地方都会重新从服务器端下载这段js?本来带宽就不是非常大,那要是没一个jsp页面都要重新加载它们的js他CSS的话,那真是太浪费了,不要说每次加载动态数据了,肯定会很慢的,但如果头部没有no-cache的话,每次查询、修改等,会不会有旧数据影响?
...全文
434 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
maosenmin 2010-06-03
  • 打赏
  • 举报
回复
我所有的页面都是.jsp的。很多是通过Action返回来的,有的是直接的jsp页面。因为我的界面样式有在数据库中存储,每个页面都有加载css。
joker_cd 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 crazylaa 的回复:]
no-cache还是加的好。速度重要还是数据准确重要?
要速度的话,开vpn啊!
又要马儿跑,又要马儿不吃草,哪有那么好的事。有些所谓“领导”完全就是拍脑袋,左边是水,右边是面粉,一拍全他妈糊了。。。

楼主杯具。。。
[/Quote]

这话
joker_cd 2010-06-02
  • 打赏
  • 举报
回复
选择性的要加上(俗称选择性失忆),其实我做做的时候一般都没有加的
gesanri 2010-06-02
  • 打赏
  • 举报
回复
除了你说的这个,有些时候,比如用到了模式窗体,缓存也挺讨厌的,具体界面要具体分析,如果影响到数据的实时性,还是要加的,但不是每个界面都如此吧
notoday 2010-06-02
  • 打赏
  • 举报
回复
学习。
swh19840329 2010-06-02
  • 打赏
  • 举报
回复
学习 学习
maosenmin 2010-06-01
  • 打赏
  • 举报
回复
en,有的页面表单内容很多,有的页面很少。隐藏域也很多,这是没办法的了。业务需要。
chuangzhijiayuan 2010-06-01
  • 打赏
  • 举报
回复
我想是你的页面加载时候变量声明的太多了吧,导致很慢,
dengweiyan 2010-06-01
  • 打赏
  • 举报
回复
我也认为不要加
maosenmin 2010-06-01
  • 打赏
  • 举报
回复
我图片不是很多,而且还都是那种小图标,都是几百B,几K的,不会很大,数据库执行就几十ms不要1s的时间,可是等到界面完全加载完就得等好几秒钟,有时甚至一、二十秒
izard999 2010-06-01
  • 打赏
  • 举报
回复
完全没有必要加.! 删了算
humcomm 2010-06-01
  • 打赏
  • 举报
回复
我认为加与不加影响不大,设计不好有可能影响数据修改,我感觉影响网页大小的最大因素是页面的图片大小和多少,当然多运用CSS也会减少html的代码
maosenmin 2010-06-01
  • 打赏
  • 举报
回复
就是在head部分的那些引用js文件及CSS的文件,如果有no-cache或没有no-cache,这些文件每次都还要重新从服务器上重新下载传回浏览器吗?
maosenmin 2010-06-01
  • 打赏
  • 举报
回复
像那些独立抽出来的那些js和css还是每次访问一个页面都去服务器重新下载吗?实在没必要啊。
benben19870912 2010-06-01
  • 打赏
  • 举报
回复
完全不需要加
网上经常说加这个能解决什么问题
找到问题并解决了
没发现这个有什么用
muler1988 2010-06-01
  • 打赏
  • 举报
回复
感觉加不加没多大影响
水中影子 2010-06-01
  • 打赏
  • 举报
回复
一直没加!!!
若鱼1919 2010-06-01
  • 打赏
  • 举报
回复

可以这样嘛,就是不知道效率如何?
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;

public class NoCacheFilter implements Filter{
private FilterConfig filterConfig=null;

public void init(FilterConfig filterConfig)throws ServletException{
this.filterConfig=filterConfig;
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException{
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse res=(HttpServletResponse)response;

String path=req.getRequestURI();
String filename=path.substring(path.lastIndexOf("/")+1);
String suffix=filename.substring(filename.lastIndexOf(".")+1);

if(!staticResource(suffix)){//不是静态资源,就不能缓存
res.setDateHeader("Expires",0);
res.setHeader("Cache-Control","no-cache");
res.setHeader("Pragma","no-cache");
}
chain.doFilter(request,response);
}
public void destroy(){
this.filterConfig=null;
}
private static String[] staticResources=new String[]{//自己接着添加
"JS","CSS","HTML","HTM","JPG","GIF","JPEG"
};
private static boolean staticResource(String suffix){
suffix=suffix.toUpperCase();
for(int i=0,j=staticResources.length;i<j;i++){
if(staticResources[i].equals(suffix)){
return true;
}
}
return false;
}

}
IT难 2010-06-01
  • 打赏
  • 举报
回复
请寻求=页面静态化的方法~~
速度超快,尽量不要去访问数据库
fanyuna 2010-06-01
  • 打赏
  • 举报
回复
不太清楚,帮顶一下,期待高人
加载更多回复(4)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧