跳转到主要内容

Drupal

如何利用又拍云 CDN 给 Drupal 加速

Tony 提交于 周二, 2020-03-24 - 19:21

最近备案了一个仿蓝汛 CDN 的域名,当然是为了享受国内的 CDN 加速服务,例如又拍,七牛,各种 OSS。但我对七牛没什么感觉(单纯是名字不讨喜),各种 OSS 感觉又太重了,不值得为这个功能去记另外一套体系的东西,于是选择又拍云作为 CDN。

目前你访问 TONYHEAD 通利堂 的时候,只会从 tonyhead.com 上请求 index.php 和一个负责生成二维码的 qr.php ,其他的静态资源例如 .css .js .jpg 都会从又拍云 CDN tonyhead.chinacachecdn.com 处加载。这些静态资源其实都储存在 tonyhead.com,只是通过又拍云这个高速的中间人实现最优的内容投递。

访问路径大概是这样:访客  <->  ⚡又拍云 CDN⚡ <-> 源站 tonyhead.com

先在又拍云创建一个 CDN 空间,在 CDN 空间的设置里面:

  • 回源管理 需要添加源站地址如 www.tonyhead.com,端口 80,勾上协议跟随,又拍云会自动寻找位于 443 端口上的 HTTPS 端口。
  • 回源 Host 需要添加源站 www.tonyhead.com 以匹配 Drupal settings.php 里 trusted_host_patterns 的设置。
  • 源站资源迁移 建议勾上并配置一个又拍云云储存空间,当静态资源被第一次访问的时候,静态内容就会保存在这个空间里,访客会直接从又拍云 CDN 拉取这个文件,而不用每次都回源到 tonyhead.com 上。
  • 缓存配置 设置为全局缓存7天。
  • 性能优化成本控制图像处理 我没修改,用的都是默认。
  • HTTPS 可以申请免费的 Let's Encrypt 证书。

边缘规则 很重要要单独拿出来说说,我配置了一条规则,用来防止搜索引擎重复收录源站和又拍云 CDN 镜像站的 HTML 页面(想想看,作为网站主的你发现 www.tonyhead.com 和 cdn.tonyhead.com 的文章页居然是一样的时候是多尴尬的事情)。网上很多教程都是❌错的,或者效果不好(robots.txt 只能蒙搜索引擎,但访客依然有机会把镜像站的 URL 加入收藏夹),请用我这里的设置,原理就是告诉又拍云 CDN,当访客访问到非静态内容后缀的时候,跳转回源站。

简单来说,这个规则实现了这个功能:

  1. 当访客访问 cdn.tonyhead.com/1.jpg 的时候,回源 www.tonyhead.com/1.jpg,并用 cdn.tonyhead.com/1.jpg 推送给访客(加速生效)。
  2. 当访客访问 cdn.tonyhead.com/about.html 的时候,触发边缘规则,浏览器收到 301 重定向跳转回 www.tonyhead.com/about.html(同时防止了镜像收录)。

下图 正则不匹配(不区分大小写) 后的那个 匹配值 截图不完整,贴到这里,可以根据自己的情况增加或删除后缀。   

.(jpeg|jpg|gif|png|css|js|svg|ico|zip|rar|7z|woff2)(.*)$

如何利用又拍云 CDN 给 Drupal 加速

又拍云 CDN 那边就设置好了,接着配置 Drupal ,先下载一个 CDN 插件,这个插件会自动把页面元素的 URL 替换成指定的 CDN 域名 URL。再启用插件,在后台进行配置,把需要加速的静态文件后缀加上,又拍云 CDN 的域名加上,保存即可。

如何利用又拍云 CDN 给 Drupal 加速

清空 Drupal 缓存,打开 F12 看看效果吧。🤓

文章标签

如何使用 Drupal 的视图功能为网站增加内容

Tony 提交于 周一, 2020-03-23 - 18:35

MovableType 从 7.0 版本开始增加了 「Content Type 内容类型」 这一概念,殊不知 Drupal 早于十二年前已经实现。

视图是 Drupal 的另一个核心功能,通过控制可以高度自定义字段的位置来生成内容页或区块,Drupal 比我见到过的任何 CMS 都更加灵活,下面我介绍一下如何给网站添加一个增加情趣的类似豆瓣的「书单」功能,0代码,全部功能通过点点点鼠标即可实现。

我的网站我做主!“脏”数据“脏”结构我乐意!😎

先来看看成果,这是我的书单页 —— 📚 Tony 书单,有个小下拉选项,可以筛选 想读/在读/读过 状态。而每个页面的左边有一个 “在读的书”区块,“筛选了按 最后发表 排序的 1 个状态为 在读 的来自内容类型为 书单 的结果”。

具体操作方法,先建立一个名为 书单 的内容类型,发布选项里面的 发布到首页 可以去掉,因为我不想书单条目进入博客的主信息流里,其他栏位随意。

Drupal 视图

在书单的内容类型下,建立若干个字段,例如 ISBN图书封面阅读状态豆瓣链接,悉随君便,我们稍后要用到这些字段来输出内容。

调整一下字段的位置,方便按自己的逻辑顺序输入内容,弄好后可以尝试创建一本「书」,编辑时后台大概长这样。(封面 那里实现得很脏,不过我乐意,0代码的代价🤣)

Drupal 视图

如法炮制创建了若干本书后,名为「书单」的内容类型就有「内容」了,这时我们再去视图里想办法把这些内容展示出来。

创建一个视图,显示 内容 类型为刚刚创建的 书单 ,生成一个页面 和 生成一个区块 都勾上,因为我们要生成一个展示所有书的页面和一个 在读的书 的小挂件,页面路径,是否生成 RSS 等选项可以稍后修改。

Drupal 视图

下一步,进入视图编辑状态,可以对着下图抄一遍,左上角显示的是目前在编辑 Page 页面 。

Drupal 视图

区块(小挂件)的设置,左上角显示的是目前在编辑 Block 区块。

Drupal 视图

注意的地方是编辑 Page 页面 的话,过滤条件里的设置也会影响到 Block 区块,所以在设置过滤条件的时候,选 (覆盖),就不会“传染”到邻居了。

Drupal 视图

操作都是很直观的,重复上面的话,“筛选了按 最后发表 排序的 1 个状态为 在读 的来自内容类型为 书单 的结果”,前几次用会感觉到迷糊,但成功设置过一次之后,就会觉得打开了新的大门一样。

回头再细细挖掘各个栏位,例如年底时可以通过过滤发布时间为 2020 年的读过的书,生成一个自己的 2020 年书单,没有做不到,只有想不到。😤

嗯就这样,这篇文章的目的就是督促自己看书和安利 Drupal ,遇到什么问题的可以留言共同研究。🤓

文章标签

网站丢失 emoji 表情的解决方法 📓

Tony 提交于 周五, 2019-03-08 - 01:08

上次 升级到 Drupal 8 时顺便升级了数据库编码到 utf8mb4,但偶然发现(大概就是动过数据库备份/还原后)emoji 表情都变成了问号 ? 。

观察了一阵子,发现并不是所有的 emoji 都会丢失,在 Unicode 5.2 版本以下的 emoji 是不会丢失的,为此我还弄了一个页面来提醒自己哪个版本以下的 emoji 是可以使用的,在插入文章里会先看一下这个 emoji 的版本,为了方便复用还把网站常用的 emoji 保存到 Evernote 里,但终于也在一次 Evernote 升级时变成了 ❓ ……

解决方法,在 my.cnf 里加入以下设置:

 

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

重启 MySQL/MariaDB。

修复表的记录

mysqlcheck -u root -p --auto-repair --optimize --all-databases

再进行数据库备份/还原的操作,清除缓存,发现 emoji 终于没有变砖 🧱 了(这个砖头的 emoji 在 Unicode 11 里,老系统不一定看得见),问题解决。

文章标签

开源还是闭源?记使用Drupal时踩过的坑。

Tony 提交于 周五, 2017-08-18 - 19:19

开源还是闭源?记使用Drupal时踩过的坑。

Drupal是一款流行的开源CMS,有着清晰的版本发行时间,同时也以庞大的模块库闻名,不懂代码的用户都可以通过1个或者多个模块来共同实现一个需要大量coding才能实现的功能。

在使用Drupal的过程里,我获得了大量积极的感受,让我感受到这个CMS的强大和开源社区的活力,然而回头看一下也为自己挖了很多坑……例如某个模块很可能因为没有跟上主程序小版本的更新而导致出BUG,甚至是没有动力为7到8这种主版本的升级提供相对应的版本,导致Drupal 8的用户只能放弃这个插件,或者停留在Drupal 7上。

记录一下从Drupal 7升级到Drupal 8,从Drupal 8.0升级到Drupal 8.3一路下来踩过的坑:

文章标签

Drupal 8 后台加载卡顿的解决方法

Tony 提交于 周四, 2017-03-16 - 13:30

很多人觉得Drupal 8在登录状态下后台加载有卡顿的感觉,表现为上方的 admin bar 未完整加载时页面的链接都不能触发,鼠标指针也不能变成 mouseover 的状态。

有人说是 Admin Toolbar 模块的锅,但这么好的插件实在很难令人割舍。

经过检查,发现元凶是 Drupal 8 默认的 Quick Edit 模块解析加载耗时,这个模块对于生产环境来说基本是可有可无的,所以我的建议是直接把这个模块禁用。

但如果你十分需要快速编辑这个功能,那么我的建议是把js放到页面的底部来执行,具体可以安装 AdvAgg 模块,打开 AdvAgg Modifier 模块,把 js 移到页面底部

这样一来,Drupal 8 的操作就顺畅多了,又回到了 Drupal 7 的速度了。

2017-10-13更新,此"Bug"已在 Drupal 8.4.0 中解决,猴犀利! 🤔

文章标签

升级到 Drupal8

Tony 提交于 周日, 2017-01-29 - 16:46

先按照这几个步骤把 Nginx 的坑填好,Drupal 官方到现在都没有一个开箱即用的 Drupal 8 for nginx.conf ,连最基本的 clean url 和下载远程文件都得按不同的文章这里修修那里补补才能用上。

再按照这几个步骤把 Memcached 的坑填好,有大神说 Drupal 8 使用 Memcached/Redis 没有太多增益,嗨 ,先搭起来,目前没看到有类似X Autoload之类可以很明显增强性能的模块,SupercachePanels 有冲突,先放一边等更新再说。

最后按照官网的升级步骤做就可以了,再进行 Drupal 著名的点点点配置工作,我点了3天才把待完成列表点完,还有不少模块没有 Drupal 8 的版本而要想另外的方法实现或只能等待,1年前接触 Drupal 7,1年后更新 Drupal 8 ,升级到 Drupal 8 的好处都有啥?对个人用户来说还有 BigPipe数据库转换后还能用上 emoji ,总之,好玩! 😍

相关链接

文章标签

Drupal7在不同环境下的效能

Tony 提交于 周一, 2016-06-13 - 11:11

在升级VPS环境时对比了一下php5,php7和Memcached对Drupal7的效能的影响。

亮点

  • Drupal7对高版本的php有优化,在启用Memcached的情况下,php7比php5减少了15%的查询次数。
  • 启用Memcached就能达到加速200%的效果,实施简单并且非常划算。
  • php7线程占用内存变少,意味着能同时承受更多的访问量。

有图有真相(数值越小越好)

drupal+php7+memcached

测试数据

drupal+php7+memcached

总结

推荐使用php7+apc+apcu+memcached的环境来跑Drupal7,目前还没看到有不兼容的问题出现。

回到顶部

文章标签

AdvAgg + CDN 为 Drupal 加速

Tony 提交于 周六, 2016-05-07 - 13:08

Advanced CSS/JS Aggregation模块能把页面上的CSS和JS数量合并/压缩到指定数量,例如1,来减少HTTP请求数。CDN模块则能把指定格式/指定路径的静态文件改写到指定的域名上(例如改写到一个或多个支持CDN的空间)来进行加速。

效果图,TONYHEAD 通利堂首页的CSS和JS请求数减为1,misc目录下的文件(可以在CDN模块里通过黑白名单设置哪些路径)全部走又拍云上的CDN空间(cdn. tonyhead.com)。

AdvAgg + CDN 为Drupal加速

2016-06-11更新

在另外一个Drupal站实施AdvAgg加速的效果,三个结果分别为:

文章标签

Drupal推荐模块

Tony 提交于 周三, 2016-02-17 - 21:09

玩了几天Drupal有感。

系统类

内容类

加速类

防止SPAM类

文章标签

如何把 MovableType 导入 Drupal

Tony 提交于 周四, 2016-02-04 - 12:22

此文记录了如何把一个MovableType的博客导入Drupal的过程,也可当成是一个WordPress导入Drupal的教程。 大体思路是先把MovalbeType导入WordPress,然后通过Migration from WordPress模块把WordPress导入Drupal。

回到顶部

导入前导入后的文件结构区别

N/A表示在转换过程中会丢失。

  • MovableType ---> WordPress ---> Drupal
  • Entry ---> Post ---> Article
  • Page ---> N/A ---> N/A 注:MovableType导出的文件不带Page的部分
  • Category ---> Category ---> Tags(taxonomy)
  • Tags ---> Category ---> Tags(taxonomy) 注:在MovalbeType导入WordPress过程中后会自动截取文章标题转录入Tags,会有大量Tags生成。
  • Custom Fields ---> N/A ---> N/A
  • Comment ---> Comment ---> Comment
  • Trackback ---> Comment ---> Comment

回到顶部

MovalbeType导入WordPress

  1. 在MT 6后台,选 Tools -> Export Entries -> Export Website,可以得到一个TXT文件。
  2. 把这个TXT文件改名为 mt-export.txt ,上传到WordPress的 wp-content 目录下。
  3. 在WP后台,选 工具 -> 导入 -> Movable Type and TypePad (可能会提示需要安装插件) -> 导入 mt-export.txt
  4. 完成。

回到顶部

WordPress导入Drupal所需要的模块

因为Migration from WordPress支持在线导入WordPress站点,不需要任何数据文件,使得两边导入非常便捷,不用担心导入体积较大的网站时会出现脚本超时的状况。导入过程也伴随一个导入向导,你可以在向导中设置各种导入参数,甚至可以在导入结束后把Drupal倒回原来的状态。

回到顶部