FIX: remove slow platform detection from server side

FIX: remove slow platform detection from server side

Historically due to Why is Discourse so slow on Android? - dev - Discourse Meta
we decreased page sizes of both home page and topic page on android by half.

This was done on the server side and as a side effect and caused page sizes on android
to mismatch between Android and non Android.

Unfortunately about a year ago googlebot started pretending it is Android,
this cause Google to start indexing pages as what android would see. So
it saw double the amount of pages in the index as what exists on desktop.
This in turn caused double the amount of indexing work and a large amount
of broken links on long topics.

This fix removes all special behavior which is no longer needed due to
other performance work in Discourse including raw handlebars on home page
and virtual dom on topic pages.

I tested we do not need this on Blu Advance 5.0 it has 1.3 GHZ mediatec mt6580
This phone retails for around $50 USD.

If we decide long term that we want any hacks like this we will shift them
to the client side. It can just hold data in memory without rendering.

diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 9cec48c..846ffc2 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -101,10 +101,6 @@ class ApplicationController < ActionController::Base
     end
   end
 
-  def slow_platform?
-    request.user_agent =~ /Android/
-  end
-
   def set_layout
     use_crawler_layout? ? 'crawler' : 'application'
   end
diff --git a/app/controllers/list_controller.rb b/app/controllers/list_controller.rb
index d52f1ee..2076d0a 100644
--- a/app/controllers/list_controller.rb
+++ b/app/controllers/list_controller.rb
@@ -383,7 +383,6 @@ class ListController < ApplicationController
     # hacky columns get special handling
     options[:topic_ids] = param_to_integer_list(:topic_ids)
     options[:no_subcategories] = options[:no_subcategories] == 'true'
-    options[:slow_platform] = slow_platform?
 
     options
   end
diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb
index 624eff5..2c02fc7 100644
--- a/app/controllers/tags_controller.rb
+++ b/app/controllers/tags_controller.rb
@@ -351,7 +351,6 @@ class TagsController < ::ApplicationController
       q: params[:q]
     }
     options[:no_subcategories] = true if params[:no_subcategories] == 'true'
-    options[:slow_platform] = true if slow_platform?
 
     if params[:tag_id] == 'none'
       options[:no_tags] = true
diff --git a/app/controllers/topics_controller.rb b/app/controllers/topics_controller.rb
index a8e4822..e022dd7 100644
--- a/app/controllers/topics_controller.rb
+++ b/app/controllers/topics_controller.rb
@@ -64,7 +64,6 @@ class TopicsController < ApplicationController
     opts = params.slice(:username_filters, :filter, :page, :post_number, :show_deleted)
     username_filters = opts[:username_filters]
 
-    opts[:slow_platform] = true if slow_platform?
     opts[:print] = true if params[:print].present?
     opts[:username_filters] = username_filters.split(',') if username_filters.is_a?(String)
 
diff --git a/lib/topic_query.rb b/lib/topic_query.rb
index 0e48e34..e1934f8 100644
--- a/lib/topic_query.rb
+++ b/lib/topic_query.rb
@@ -67,7 +67,6 @@ class TopicQuery
          tags
          match_all_tags
          no_subcategories
-         slow_platform
          no_tags)
   end
 
@@ -495,7 +494,7 @@ class TopicQuery
   protected
 
   def per_page_setting
-    @options[:slow_platform] ? 15 : 30
+    30
   end
 
   def private_messages_for(user, type)
diff --git a/lib/topic_view.rb b/lib/topic_view.rb
index 21fbe75..059b111 100644
--- a/lib/topic_view.rb
+++ b/lib/topic_view.rb
@@ -9,10 +9,6 @@ class TopicView
   attr_reader :topic, :posts, :guardian, :filtered_posts, :chunk_size, :print, :message_bus_last_id
   attr_accessor :draft, :draft_key, :draft_sequence, :user_custom_fields, :post_custom_fields, :post_number
 
-  def self.slow_chunk_size
-    10
-  end
-
   def self.print_chunk_size
     1000
   end
@@ -57,7 +53,6 @@ class TopicView
 
     @chunk_size =
       case
-      when options[:slow_platform] then TopicView.slow_chunk_size
       when @print then TopicView.print_chunk_size
       else TopicView.chunk_size
       end
diff --git a/spec/components/topic_view_spec.rb b/spec/components/topic_view_spec.rb
index 6dc6bc7..44ed4df 100644
--- a/spec/components/topic_view_spec.rb
+++ b/spec/components/topic_view_spec.rb
@@ -36,11 +36,6 @@ describe TopicView do
       expect(TopicView.new(topic.id, evil_trout).chunk_size).to eq(TopicView.chunk_size)
     end
 
-    it "returns `slow_chunk_size` when slow_platform is true" do
-      tv = TopicView.new(topic.id, evil_trout, slow_platform: true)
-      expect(tv.chunk_size).to eq(TopicView.slow_chunk_size)
-    end
-
     it "returns `print_chunk_size` when print param is true" do
       tv = TopicView.new(topic.id, evil_trout, print: true)
       expect(tv.chunk_size).to eq(TopicView.print_chunk_size)

GitHub

1 Like