How we managed to Optimize OJS Frontend for almost 300% load speed 😲 ( Free Plugin )

Hello everyone,

Introducing OJTRocket plugin for helps your OJS to optimize slow article loading on your OJS. With this plugin we hope to increase the speed of site access in your journal.

The Story : One of our clients made a Conference System(OCS) system using OJS 3 with the consideration that OJS 3 is more capable in terms of the submission process workflow then security bugs in the system itself which has been minimized in OJS 3 and in terms of the appearance of the submission which is more easy to understand the flow of the submission process. To make story shorts they contacted us that their homepage site they are not accessible at all and their page archive takes a long time to finish loading front page, Although they have used AWS with powerfull spesfication. However After we did our testing we found that their site will load in our browser in 20 to 30 minutes and this only happens on the front page of their journal which is loaded with many published posts (for about 2000 articles on 1 archive). See detail case here

This issue is crucial for both : Journal manager and Author, Authors never know whether their submissions are included in the conference or not because they can never get to the front page.

The solution from our research results, we manifest in the form of a plugin that we call OJTRocket Plugin which optimizes the query process for the list of articles, you can get this plugin by visiting the following page: OJTRocket Plugin

We believe that the plugin we have created can help the OJS community who are experiencing the same problem.

What are the benefits of this optimization :

  1. Google will reward sites that have high access speeds, this will have an impact on the SEO of your journal site. So this plugin will improve the SEO of your journal on Google.
  2. Authors can find their articles more easily because the process of loading articles on the archive becomes faster.
  3. visitors will be more comfortable looking for an article in your journal because the process of loading articles on the archive becomes faster.

Quick steps for using this plugin

  1. Download plugin here OJTRocket Plugin

  2. Upload the plugin from the admin dashboard Website Settings → Plugins → Upload a New Plugin or unpack the archive into the plugins/generic/ folder.

  3. Activate the plugin from the dashboard

  4. Clear Cache Template

Additional Information
This Plugin supports OJS 3.2 and OJS 3.3

Thanks to powerful Hooks utilities by PKP Team, we don’t need to modify OJS source code, instead we create a plugin to fix this problem. Using hooks utilities we were replacing some of the default handlers using our own custom handler, with this instead using the default handler to load front-end pages, ojs will load some front-end pages using our custom handler.

If you have any question please don’t hesitate to send me message or write down bellow.

Regards
Ghazi

4 Likes

Thanks…
A very useful plugin. Also nice name: OJTRocket :slight_smile:

I can not upload the plugin from the admin dashboard
I unpack the archive into the plugins/generic/ folder.

It works great.
Also, thanks for submitting it as GNU.

Hi kerimsarigul,

Thank you for the response and appreciation, our team is very happy to be able to contribute to the community😊

2 Likes

Hi @goodzy

I found your plugin on GitHub and tried it out on one of our journals (DOCA) that has a lot of articles on the start page. A few comments and questions:

  • Is this the most recent version? The Plugin settings were not available (no menu entry).
  • Noticable improvement: page loads in half of the time compared to without the plugin. Very good so!
  • I wonder why the plugin installs a copy of the Smarty templates and doesn’t call the central frontend templates provided by OJS. We have some specific changes (e.g. a section navigation), which are turned off (or overwritten) when the plugin is enabled.
  • I would be willing to contribute translations.
  • For OJS version 3.4, PKP is working on performance improvements for database access. Is there any collaboration between PKP developers and you?

Hi @mpbraendle

Thank you for using our plugin and we are very happy that our plugin can have a positive impact on your journal site. Regarding your question, here is the answer:

  • Yes, it is the most recent version, for now, the plugin has no menu entry.

  • Yes, it is not fiction, it is fact that we have significantly improved the OJS load speed.
    Thank you for your appreciation, we are very happy our plugin has had a positive impact on your journal.

  • You can remove
    HookRegistry::register('TemplateResource::getFilename', array($this, '_overridePluginTemplates'));
    in OjtRocketPlugin.inc.php file to stop plugin overriding the template.

  • Sure, please do a pull request to GitHub.

  • Currently we have not officially collaborated with PKP, but we will try to continue to make updates or improvements to plugins or themes to continue to support the latest OJS version.

We have applied to become an official OJS service provider on PKP, we are still waiting for their approval, I hope we will soon be able to become an official service provider collaborating with PKP, so we can create more useful tools like OJTRocket. I hope they can approve our request very soon.

2 Likes

We highly recommend refraining from using the OJS plugin until it obtains official approval, as doing otherwise may result in substantial problems. It’s worth emphasizing that, unlike many developers who create plugins primarily for financial gain, the OJS team focuses on crafting plugins with the primary goal of enhancing the user experience.

1 Like

So, you’re saying that anyone who creates plugins for financial gain will create poor quality plugins, and you recommend against using those plugins? You say we should wait until this plugin is “officially approved”? Does OJS officially approve any plugins that are offered for a fee? Personally, I don’t mind paying people a little money for creating a plugin that does something I need, but that isn’t included in OJS’s base plugins.