情景问题解决方案

关于缓存

对于频繁变动的资源,缓存应该怎么设置?

对于频繁变动的资源,首先需要使用 Cache-Control: no-cache 使浏览器每次都请求服务器,然后配合 ETag 或者 Last-Modified 来验证资源是否有效。

这样的做法虽然不能节省请求数量,但是能显著减少响应数据大小。

代码文件的变动,应该怎么缓存?

一般来说,现在都会使用工具来打包代码,那么我们就可以对文件名进行哈希处理,只有当代码修改后才会生成新的文件名。基于此,我们就可以给代码文件设置缓存有效期一年 Cache-Control: max-age=31536000,这样只有当 HTML 文件中引入的文件名发生了改变才会去下载最新的代码文件,否则就一直使用缓存。

代码发布错了,如何强制更新?

和上面的问题一样,修改代码文件的hash文件名,浏览器可以自动的去下载

功能实现

如果要实现瀑布流,有什么需要注意的地方

节流、dom元素优化、两边高度统一

判断瀑布流滑动到的位置是否需要加载,循环遍历图片,获取他们的高度,在对他们进行排序,然后懒加载获取图片,进行批量加载。

兼容性

如果要兼容IE8有哪些需要注意的地方?

  • 不能使用CSS3伪类 伪类选择器
  • 布局要用relative absolute,不可以用flex和grid
  • js不能用addEventListener,用DOM0级事件绑定
  • 动画使用jq动画实现