silverstripe - 大型网站上 Silverstripe 的静态发布

标签 silverstripe

我的公司使用 SilverStripe v3.1.21 以及子网站模块来显示和管理许多销售产品的客户网站。这会产生近 200 个子网站和数万个页面。这些网站的加载速度非常慢,Google 的 PageSpeed 等工具告诉我们页面速度很差。我们已经完成了合并和最小化 JS 以及压缩图像等资源等步骤,这提供了一些改进,但页面仍然很慢。该系统是在这种状态下交给我们的,进一步的硬件升级不作为一种选择,也没有获得额外的资源进行重新开发。

我们查看了静态发布模块 ( https://github.com/silverstripe/silverstripe-staticpublisher ),发现当我们生成静态页面时,页面变得很快,并且在各种工具上获得了良好的分数,但是重新生成所有这些页面的过程需要超过 14 小时,这是 Not Acceptable ,因为这些产品每天都会从外部源更新。我们还发现,重新生成过程会占用大量内存,因为该模块在转储到文件之前会在内存中构建所有页面,从而导致进程崩溃。我们必须逐个子站点地更改流程才能使其运行。

然后我们查看了静态发布队列模块 ( https://github.com/silverstripe/silverstripe-staticpublishqueue ),该模块似乎通过根据重新生成所需的页面对页面进行排队来解决我们的问题,从而使其对更改的响应更加灵敏。然而,该模块似乎有很多 bug,在生成页面时经常崩溃。

是否有人有在大型网站上使用这些模块(或类似模块)的经验,并且能够提供有关如何成功实现静态发布的任何指示或想法?

最佳答案

我们目前在多个站点上使用 staticpublishqueue。我们遇到的唯一问题是由于构建时间长和锁定不良而导致崩溃。或者准确地说,它实际上并没有崩溃,而是不断产生越来越多的实例,直到服务器变得不负责任。

我认为我们的 fork 中已经解决了这个问题。至少我们使用修改后的锁定后没有出现任何问题。您可以尝试安装the fork而不是官方版本。如果这可以解决您的问题,也许我们应该提出拉取请求:)

关于silverstripe - 大型网站上 Silverstripe 的静态发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46313840/

相关文章:

php - Silverstripe 3.0-脚本标签在保存和发布后从编辑器内容中删除

silverstripe - 使用 onBeforeWrite 时是否可以区分 Silverstripe 中的 Live 和 Stage?

php - 如何在 Silverstripe 中循环模板

php - Silverstripe 不会从数据库返回字段

php - 在带有枚举的 DataObject 的 ModelAdmin 过滤器中使用脚手架列表框进行多项选择

silverstripe - 自定义报告 SilverStripe 3.1

php - 如何在 MySQL 中使用 Silverstripe 3.3 中的事务?

php - SilverStripe - 使用函数获取页面的表单值

directory - 银条3.2 : Get ID from certain Folder

php - 为 SilverStripe 站点自动填充站点树项目